Klassendiagramm
Diese Seite enhält Hinweise zur Konfiguration und Nutzung von Klassendiagrammen in MagicDraw.
Klasse, Attribute und Methoden anlegen
Man legt eine Klasse an
, indem man in der mittleren Leiste das Klassensymbol auswählt und danach in das Diagramm klickt. Den Klassennamen tipp man direkt in die Klasse ein, oder öffnet über die rechte Maustaste die Spezifikation
der Klasse und füllt die Eigenschaft Name
aus.
Um ein Attribut oder eine Methode anzulegen,
- selektiert man die Klasse,
- klickt den schwarzen Kreis am Rande des Klassensymbols an
- und wählt Property für ein Attribut
- oder Operation für eine Methode an.
Für ein Attribut
gibt man an:
Attributname : Typ
Für eine Methode
gibt man an:
Methodenname (Parameter1 : Typ, Parameter2 : Typ) : Returntyp
Die entsprechenden Informationen können auch über die Spezifikation
(rechte Maustaste/Specification) angegeben werden.
Assoziation, Generalisierung, Aggregation anlegen
Zum Anlegen von Assoziation, Generalisierung oder Aggregation klickt man in der mittleren Spalte
die gewünschte Verbindug an. Danach klickt man Start- und Zielklasse an.
Man kann alternativ auch im Klassendiagramm
eine Klasse selektieren und aus der aufpoppenden Liste auswählen. Danach klickt man die Zielklasse an.
Ändern der Eigenschaften einer Assoziation
Um die Eigenschaften einer Assoziation zu ändern, stellt man den Cursor z. B. auf das Ende der Assoziation und drückt die rechte Maustaste. Folgende Optionen sind wählbar:
Funktion | Wirkung |
---|---|
Navigable | Erzeugt einen Pfeil am Ende der Assoziation |
Shared | erzeugt eine Aggregation |
Composite | erzeugt eine Komposition |
Zahlen | im unteren Bereich kann die Multiplizität ausgewählt werden |
Assoziationsnamen angeben
Man stellt den Cursor auf die Linie und tippt den Namen ein.
Assoziationsnamen: Pfeil der Leserichtung anzeigen
Zum Anzeigen des Pfeils, der die Leserichtung des Assoziationsnamens einer Assoziation angibt, stellt man den Cursor auf die Assotiation und wählt über die rechte Maustaste Symbol Properties
und stellt die Eigenschaft Show Direction Arrow
auf true.
Assoziationsnamen: Pfeil der Leserichtung umkehren
Um den Pfeil, der die Leserichtung eines Assoziationsnamens angibt umzudrehen
- stellt man den Cursor auf den Pfeil
- und wählt über die rechte Maustaste
Refactor/Reverse Direction
Assoziationsklasse
Um eine Assoziationsklasse zu erzeugen, müssen die beiden Klassen, die an der Assoziation beteiligt sind im Diagramm existieren. Die Assoziation darf NICHT existieren. Man wählt in der mittleren Spalte Association/AssociationClass
und klickt danach beide Klassen an, die durch die Assoziation verbunden werden sollen. Die Assoziationsklasse hat den selben Namen, wie die Assoziation.
Assoziationsklasse für vorhandene Assoziation anlegen
Man kann eine Assoziation nachträglich zu einer Assoziationklasse ändern. Dazu stellt man den Cursor auf die Assoziation und wählt über die rechte Maustaste Refactor/Convert To/Association Class
.
Darstellung von Entity, Boundary und Controller Variante 1
Bei dem ersten Anlegen einer Entity, Boundary oder Controllerklasse zeigt Magicdraw nur das Symbol an. Es wird nicht das Klassensymbol angezeigt. So stellt man die Anzeige um:
Man erzeugt die erste Klasse und wählt dann im Kontextmenu der Klasse Symbol Properties
.
Hier stellt man die Eigenschaft Show Stereotypes
auf Icon
und klickt dann die Checkbox unten links Make Default
an.
Darstellung von Entity, Boundary und Controller Variante 2
Man wählt das Menu Options/Project und öffnet den Knoten Stereotypes
unter Symbol styles
. Dann klickt man den Button Add/Remove Stereotype. Jetzt klickt man den Button Copy to Project style
und kann die Darstellungeigenschaften editieren. Dann klickt man den Button Apply
, wählt die Diagramme auf die man die Darstellung anwenden möchte und beendet die Einstellung durch einen Klick auf OK. Auch die folgenden beiden Fenster quittiert man mit OK.
Elemente von Klassen ein- und ausblenden
Man kann Elemente (Attribute oder Operationen) von Klassen ein- und ausblenden. Dies geschieht mit der Funktion "Edit Compartment" im Kontext-Menu. Ein Compartment (Abteilung) einer Klasse, die nicht alle Elemente dargestellt, hat im unteren Bereich drei Punkte.
Konstruktoren und Destruktoren
Man legt eine gewöhnliche Operation für eine Klasse an, und weist einem Konstruktor den Stereotyp << constructor >> oder <<C++Constructor>> zu. Einem Destruktor weist man den Stereotyp <<C++Destructor>> oder << destructor >> zu. Die Stereotypen <<C++Constructor>> und <<C++Destructor>> sind in dem Profil C++ANSI_Profile definiert und stehen nur zur Verfügung, wenn dieses Profil geladen ist.
Getter, Setter
Getter und Setter, für den Zugriff auf Attribute einer Klasse, erzeugt man, indem man eine Klasse im Klassendiagramm selektiert und aus dem Kontextmenu die Funktion Tools/CreateGetterSetter
startet. Im folgenden Dialog wählt man die Attribute, auf die man zugreifen möchte und gibt über die Checkboxen an welche Zugriffsmethoden erzeugt werden sollen.
Virtuelle Methoden
Um eine Methode als virtuell zu deklarieren stellt man in der Spezifikation die Eigenschaft Virtual auf true.
Realisieren von 1 zu * Beziehungen in C++
Bei Assoziationen erzeugt MagicDraw die entsprechenden Referenzen als Attribute in den Klassen. Die Attributnamen (pStudent, pFB) müssen angegebn werden. Sie stehen danach als Rollennnamen an der Assoziation. Die Referenzattribute werden in der Standardeinstellung im Klassendiagramm nicht angezeigt. Die Anzeige muss eingeschaltet werden.
Am folgenden Beispiel wird das Vorgehen beschrieben.
Die Klasse Student benötigt in C++ einen Pointer auf die Klasse FB. Das kann man in der Spezifikation des Attributs pFB
angeben, indem man für die Eigenschaft Type Modifier
den Wert $*
einträgt.
Die Klasse FB braucht einen Vector, der Pointer auf die Klasse Student enthält. Das gibt man in der Spezifikation des Attributes pStudent
an. Für die Eigenschaft Container
trägt man den Wert std::vector<$ *>
ein.
In Code umgesetzt ergeben sich folgende Strukturen:
// FB.h
#ifndef FB_H_H
#define FB_H_H
#include "Student.h"
class Student;
class FB
{
std::vector<Student *> pStudent;
};
#endif
// Student.h
#ifndef STUDENT_H_H
#define STUDENT_H_H
#include "FB.h"
class FB;
class Student
{
FB* pFB;
};
#endif
Anlegen einer Assoziation für existierendes Attribut
Referenziert ein Attribut einer Klasse eine andere Klasse, so kann die zugehörige Assoziation automatisch erzeugt werden.
- man stellt den Cursor auf das Attribut
- und wählt über die rechte Maustaste
Refactor/Convert To/Association
Erzeugen der korrekten Forward-Deklaration
Zur Generierung der korrekten Forward-Deklaration öffnet man die Spezifikation des Attributs, das eine andere Klasse refereneziert und wählt in der linken Spalte C++ Language Properties
aus. Im rechten Frame stellt man die Eigenschaft Header include
auf den Wert Class Foreward
.
Public Vererbungs-Deklaration erzeugen
Bei Vererbungen muss bei MagicDraw die Sichtbarkeit der Vererbung public angegeben werden. Sonst erzeugt MagicDraw private Vererbungen. So geht es:
man stellt den Cursor auf die abgeleitete Klasse und wählt über die rechte Maustaste Specification
hier stellt man die Eigenschaft Inheritance visibility
auf true
Mehrere Vererbungspfeile zusammenfassen
Hat man in einer Vererbungshierarchie mehrere Vererbungspfeile erzeugt, kann man diese zu einem Pfeil zusammenfassen, indem man den Cursor auf die Oberklasse stellt und über die rechte Maustaste Refactor/Make Sub Tree
wählt.
Constraints für Vererbung
Bei einer Vererbungshierarchie kann angegeben werden, ob die Vererbungshierarchie vollständig, disjunkt oder überlappend ist. Man stellt den Cursor auf den Vererbungspfeil und wählt das Kontextmenu. Hier setzt man bei Subclasses complete
und Subclasses disjoint
einen Haken.
Vererbung: geerbte Methode implementieren/überschreiben
Erbt eine Unterklasse in einer Vererbungshierarchie eine Methode von einer Oberklasse, so kann sie wie folgt in der Unterklasse überschrieben oder implementiert werden:
- man selektiert die Unterklasse
- wählt über die rechte Maustaste
Tools/Implement/Override Operation
- im folgenden Dialog wählt man die zu implementierende Methode.
Klassen in mehreren Diagrammen darstellen
Klassen können in mehreren Diagrammen dargestellt werden. Dazu zieht man eine Klasse aus dem Modellbaum - Containement-Frame) in ein Diagramm hinein. MagicDraw weiß aber, das es sich um die selbe Klasse handelt. Verändert man eine Eigenschaft in einem Diagramm, wird die Änderung auch im anderen Diagramm angepasst. MagicDraw kennt auch alle Beziehungen der Klasse, stellt diese aber nicht automatisch dar. Um die Beziehungen einer Klasse darzustellen, wählt man in dem Menu Analyze
eine der Display-Funktionen
aus.
Design Pattern anlegen
MagicDraw kann viele Design Patterns automatisch erzeugen. Man selektiert eine Klasse und wählt Tools/Apply Pattern
. Im folgenden Fenster wählt man das gewünschte Pattern aus und klickt den Finish-Button
.
Interface
- Zuerst erzeugt man die Klassen Anbieter, Nutzer und das Interface
- Dann erzeugt man zwischen der Klasse Anbieter und dem Interface eine
Interface Realization
- Beziehung. - Zwischen der Klasse Nutzer und dem Interface erzeugt man eine
use
- Beziehung. - Um das Interface in die Lollipop-Darstellung umzuschalten, ändert man über die
Symbol Properties
des Interface die EigenschaftSupress Operation
auftrue
.