Klassendiagramm
Diese Seite enhält Hinweise zur Konfiguration und Nutzung von Klassendiagrammen in MagicDraw.
- Darstellung von Entity, Boundary und Controller Variante 1
- Darstellung von Entity, Boundary und Controller Variante 2
- Elemente von Klassen ein- und ausschalten
- Konstruktoren, Destruktoren
- Getter, Setter
- virtuelle Methoden
- Assoziationsklasse
- Realisieren von 1 zu * Beziehungen in C++
- Anlegen einer Assoziation für existierendes Attribut
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.
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 Association/AssociationClass
und klickt danach beide Klassen an, die durch die Assoziation verbunden werden sollen. Die Assoziationsklasse hat den selben Namen, wie die Assoziation.
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 "Studenten.h" class Studenten;
class FB { std::vector<Studenten *> pStudenten; }; #endif
// Student.h #ifndef STUDENT_H_H #define STUDENT_H_H #include "FB.h" class FB; class Studenten { FB* pFB; }; #endif