Klassendiagramm und Objektdiagramm
Ein Klassendiagramm ist ein Strukturdiagramm der Unified Modeling Language (UML) zur grafischen Darstellung (Modellierung) von Klassen, Schnittstellen sowie deren Beziehungen. Ein Objektdiagramm stellt Instanzen von Klassen zur Ausführungszeit dar.
Klassendiagramm und Objektdiagramm erstellen Sie komfortabel mit dem bewährten Modellierungstool von MID.
Innovator Enterprise Modeling Suite kostenlos testen.
Definition
Das Klassendiagramm (engl. class diagram) ist ein Strukturdiagramm und stellt Klassen, Schnittstellen sowie deren Beziehungen dar. Eine Klasse ist in der Objektorientierung ein abstrakter Oberbegriff für die Beschreibung der gemeinsamen Struktur und des gemeinsamen Verhaltens von Objekten (Klassifizierung). Im Zusammenspiel mit anderen Klassen ermöglichen sie die Modellierung eines abgegrenzten Systems in der objektorientierten Analyse und Entwurf.
Das Objektdiagramm (engl. object diagram) ist ein Strukturdiagramm und stellt Instanzen von Klassen zur Ausführungszeit als Schnappschuss des Systems dar.
Das Symbol des Klassendiagramms zeigt ein Diagramm mit einer symbolischen Klasse.
Das Symbol des Objektdiagramms zeigt ein Diagramm mit einer symbolischen Objektstruktur.
Verwendung
Klassendiagramme sind der zentrale Diagrammtyp der UML. Sie beschreiben die Klassen eines Systems, ihre Eigenschaften, Operationen und die Beziehungen zwischen den Klassen. Klassendiagramme werden in allen Phasen der Softwareentwicklung eingesetzt.
Die modellierten Inhalte und das verwendete Vokabular müssen sich an dem Know-how der beteiligten Personengruppen orientieren. Ein Klassendiagramm modelliert einen Teilausschnitt der realen Welt. Es werden nur die Klassen und Eigenschaften berücksichtigt, die zur Beschreibung des Problembereichs benötigt werden.
Bei der Modellierung von Klassendiagrammen wird in der Regel zwischen dem Analysemodell und dem Designmodell unterschieden:
-
Analysemodell
Klassendiagramme in der Sichtweise der Analyse stellen dar, was das System aus Anwendersicht leisten soll. Sie bilden die Klassen, Attribute, Operationen und ihre Beziehungen ab, die das spätere Softwaresystems aus der Sicht des fachlichen Bereiches, den es abdecken soll, enthalten muss.
-
Designmodell
Im Designmodell wird das Analysemodell auf die Implementierungstechnologie abgebildet. Klassendiagramme in der Sichtweise Design stellen dar, wie das System technisch aufgebaut sein muss, damit es die in der Analyse geforderten Eigenschaften realisieren kann. Die in der Systemanalyse erkannten und dokumentierten Strukturen werden um die Informationen, die nötig sind, um das fachliche Modell zu implementieren, erweitert.
Elemente des Klassendiagramms
Knoten
Die folgenden Modellelemente können als Knoten in Klassendiagrammen dargestellt werden:
Symbol | Element | Beschreibung |
---|---|---|
Klasse |
Eine Klasse enthält die Beschreibung und die Struktur von Objekten, die mit ihrer Hilfe erzeugt werden können (Schablone für Objekte). Eine Klasse wird durch ihre Attribute und Operationen definiert. Wenn Sie die Klasse auf eine Klasse ziehen, wird die neu erzeugte Klasse zur inneren Klasse der vorhandenen Klasse. |
|
Schnittstelle |
Eine Schnittstelle realisiert die Feature-Benutzung zwischen Nutzer und Anbieter. Wenn Sie die Schnittstelle auf eine Klasse ziehen, wird die neu erzeugte Schnittstelle zur inneren Klasse der vorhandenen Klasse. |
|
Datentyp |
Ein Datentyp fasst konkrete Wertebereiche und darauf definierte Operationen zu einer Einheit zusammen. Wenn Sie den Datentyp auf eine Klasse ziehen, wird der neu erzeugte Datentyp zur inneren Klasse der vorhandenen Klasse. |
|
Aufzählungstyp | Ein Aufzählungstyp ist ein Datentyp mit einem endlichen Wertebereich. | |
Primitiver Typ | Ein Primitivtyp bezieht sich auf Algebren und Operationen, die außerhalb des Modells definiert sind, z.B. durch Programmiersprachen oder die Mathematik. | |
Komponente | Eine Komponente definiert einen modularen Teil eines Systems, der seinen Inhalt kapselt und eine definierte Funktionalität anbietet. | |
Paket | Ein Paket fasst eine Menge von Modellelementen zu einer Gruppe zusammen und bildet einen Namensraum für sie. Pakete können andere Pakete als Unterpakete enthalten. | |
Randbedingung * | Die Randbedingung ist ein einschränkender, logischer Ausdruck, der die Semantik eines oder mehrerer Modellelemente präzisiert. | |
Kollaboration | Eine Kollaboration definiert ein Muster für die Zusammenarbeit mehrerer Modellelemente, die gemeinsam eine bestimmte Aufgabe bearbeiten. | |
Knoten | Ein Knoten stellt eine Ressource dar, auf die Artefakte verteilt werden können. | |
Ausführungsumgebung |
Der spezielle Knoten Ausführungsumgebung stellt einen bestimmten Software-Typ dar. |
|
Gerät | Der spezielle Knoten Gerät stellt einen bestimmten Hardware-Typ dar. | |
Artefakt | Artefakte stellen eine physische Informationseinheit dar, z.B. Modelle, Quellcode, Skripte oder Dokumente, die im Entwicklungsprozess oder zur Laufzeit eines Systems erzeugt oder benötigt werden. | |
Signal | Ein Signal ist ein spezieller Classifier, der die Daten beschreibt, die zwischen Kommunikationspartnern ausgetauscht werden. | |
Instanzbeschreibung * | Die Instanzbeschreibung beschreibt eine zur Laufzeit vorhandene Einheit des modellierten Systems anhand eines Beispiels. |
* Diese Knoten stehen Ihnen im Standardprofil für Objektdiagramme zur Verfügung.
Merkmale
Die folgenden Merkmale können in Klassendiagrammen für Klassen und Komponenten dargestellt werden:
Symbol | Element | Beschreibung |
---|---|---|
Attribut | Ein Attribut ist ein Element, das in jedem Objekt einer Klasse identisch vorkommt. Sein Typ dient der Beschränkung des Wertebereichs eines Attributs. | |
Operation | Operationen realisieren das Verhalten von Klassen und definieren, von welcher Art die Werte sind, die ausgetauscht werden (Parameter). | |
Literal (Aufgezählter Wert) | Aufgezählte Werte definieren durch die Deklaration des Typs mit Namen alle Werte des Aufzählungstyps. Dabei wird auch eine Reihenfolge festgelegt. | |
Templateparameter | Formale Templateparameter dienen als Platzhalter für die tatsächlichen Templateparameter, die in der Templatebindung zugewiesen werden. | |
Port | Ein Port definiert einen Interaktionspunkt eines Classifiers mit seiner Umgebung oder seinen internen Parts. | |
Slot | Ein Slot gibt einen konkreten Wert für ein Merkmal einer Instanzbeschreibung an. | |
Signalempfang | Ein Signalempfang ist ein Verhaltensmerkmal, das anzeigt, das ein bestimmtes Signal empfangen und verarbeitet werden kann. | |
Parameter | Ein Parameter ist ein Argument eines Verhaltensmerkmals. |
Kanten
Kanten stellen in Klassendiagrammen Assoziationen, Generalisierungen oder Abhängigkeiten dar:
Symbol | Element | Beschreibung |
---|---|---|
1:0..1 | Festlegen, dass eine Instanz dieses Classifiers mit maximal einer Instanz des zweiten Classifiers in Beziehung stehen kann, und dass umgekehrt jede Instanz des zweiten Classifiers mit genau einer Instanz dieses Classifiers in Beziehung steht. | |
1:1 * | Festlegen, dass eine Instanz dieses Classifiers mit genau einer Instanz des zweiten Classifiers, und umgekehrt, in Beziehung steht. | |
1:M | Festlegen, dass jede Instanz dieses Classifiers mit beliebig vielen Instanzen des zweiten Classifiers in Beziehung stehen kann, und dass umgekehrt jede Instanz des zweiten Classifiers mit genau einer Instanz dieses Classifiers in Beziehung steht. | |
1:M gerichtet | Festlegen, dass jede Instanz dieses Classifiers mit beliebig vielen Instanzen des zweiten Classifiers in Beziehung stehen kann, und dass umgekehrt jede Instanz des zweiten Classifiers mit genau einer (unsichtbaren!) Instanz dieses Classifiers in Beziehung steht. | |
M:N | Festlegen, dass jede Instanz dieses Classifiers mit beliebig vielen Instanzen des zweiten Classifiers, und umgekehrt, in Beziehung stehen kann. | |
M:N gerichtet | Festlegen, dass jede Instanz dieses Classifiers mit beliebig vielen Instanzen des zweiten Classifiers in Beziehung stehen kann, und dass umgekehrt jede Instanz des zweiten Classifiers mit beliebig vielen (unsichtbaren!) Instanzen dieses Classifiers in Beziehung stehen kann. | |
Assoziationsklasse | Eine Assoziationsklasse ist eine Klasse, deren Attribute und Operationen die Assoziation zwischen anderen Klassen beschreiben. | |
Aggregation | Festlegen, dass eine Instanz dieses Classifiers (Ganzes) Instanzen des zweiten Classifiers (Teil) enthalten kann. Die Instanzen des zweiten Classifiers können jedoch auch ohne den ersten existieren oder Teil anderer Aggregationen sein. | |
Komposition |
Festlegen, dass eine Instanz dieses Classifiers (Ganzes) Instanzen des zweiten Classifiers (Teil) besitzt und für diese existenzverantwortlich ist. Eine Vernichtung des ersten Classifiers hat die Vernichtung der enthaltenen Instanzen des zweiten Classifiers zur Folge. Eine Instanz des zweiten Classifiers kann zu einem Zeitpunkt Teil von höchstens einer Instanz des ersten Classifiers sein. |
|
Generalisierung | Generalisierungen, Assoziationen, Abhängigkeiten, Verwendungen, Abstraktionen, Realisierungen usw. drücken unterschiedliche Arten von Beziehungen zwischen den Klassen aus und beschreiben dadurch die Struktur der Klassen. | |
Schnittstellenrealisierung | Eine Schnittstellenrealisierung ist eine Abhängigkeitsbeziehung, die festlegt, dass der Classifier das in der verbundenen Schnittstelle spezifizierte Verhalten realisiert. | |
Verwendung | Eine Verwendung ist eine Abhängigkeitsbeziehung, die angibt, dass das Element das verbundene Element benutzt. | |
Realisierung | Die Realisierung ist eine gerichtete Beziehung, die aussagt, dass das Element eine Realisierung des verbundenen Elements darstellt. | |
Abstraktion * | Eine Abstraktion ist eine Abhängigkeitsbeziehung, die angibt, dass das Element eine Abstraktion des verbundenen Elements darstellt. | |
Abhängigkeit | Eine Abhängigkeit ist eine gerichtete Beziehung, die angibt, dass das Quellelement vom Zielelement abhängig ist. | |
Komponentenrealisierung | Eine Komponentenrealisierung ist eine Abhängigkeitsbeziehung, die ausdrückt, dass der Classifier einen Teil der verbundenen Komponente realisiert. | |
Öffentlicher Element- oder Paket-Import | Der öffentliche Element- oder Paket-Import ist eine gerichtete Beziehung zu einem importierten Element oder Paket, das von weiteren Namensräumen transitiv importiert werden kann. | |
Privater Element- oder Paket-Import | Der private Element- oder Paket-Import ist eine gerichtete Beziehung zu einem importierten Element oder Paket, das von anderen Namensräumen nicht indirekt importiert werden kann. | |
Assoziationskante * | Hinzufügen einer existierenden Assoziationskante zu einem Element. | |
Mitgliedschaft | Hinzufügen einer existierenden Mitgliedschaftskante zu einem Element. | |
Gerichtete Beziehungskante | Hinzufügen einer existierenden gerichteten Beziehungskante zu einem Element. | |
Socket-Ball-Kante | Hinzufügen einer existierenden Socket-Ball-Kante zu einem Element. |
* Diese Kanten stehen Ihnen im Standardprofil für Objektdiagramme zur Verfügung.
Weitere Informationen