
Einführung in Klassendiagramme
Klassendiagramm bietet einen Überblick über das Zielsystem, indem Objekte und Klassen innerhalb des Systems sowie die Beziehungen zwischen ihnen beschrieben werden. Es bietet eine Vielzahl von Anwendungsmöglichkeiten; von der Modellierung der domänenspezifischen Datenstruktur bis hin zur detaillierten Gestaltung des Zielsystems.
Wichtige Vorteile:
-
Domänenmodellierung: Erfassen von Geschäftsentitäten und ihren Beziehungen
-
Systemdesign: Definieren der Softwarearchitektur auf Klassenebene
-
Codegenerierung: Generieren von Implementierungscode aus Modellelementen
-
Dokumentation: Erstellen wartbarer technischer Dokumentation
-
Modellwiederverwendung: Klassemodelle über Interaktionsdiagramme teilen, um dynamisches Verhalten zu modellieren
-
Automatisierte Generierung: Verwenden Sie das Formular-Diagramm, um Diagramme automatisch mit benutzerdefiniertem Umfang zu generieren
Grundlegende Notationen und Elemente
Grundlegende strukturelle Elemente
Klasse

Definition: Eine Klasse beschreibt eine Menge von Objekten, die die gleichen Spezifikationen für Merkmale, Einschränkungen und Semantik teilen. Eine Klasse ist eine Art Klassifikator, dessen Merkmale Attribute und Operationen sind.
Wichtige Eigenschaften:
| Eigenschaft | Beschreibung |
|---|---|
| Name | Der Name der Klasse |
| Eltern | Das Modell-Element, das die Klasse besitzt |
| Sichtbarkeit | Bestimmt das Erscheinungsbild und die Erreichbarkeit des Namensraums |
| Abstrakt | Wenn wahr, kann die Klasse nicht direkt instanziiert werden |
| Blatt | Wenn wahr, kann die Klasse nicht weiter spezialisiert werden |
| Wurzel | Gibt an, ob die Klasse keine Vorfahren hat |
| Aktiv | Bestimmt, ob Objekte aktiv (konkurrierend) oder passiv sind |
| Attribute | Direkte Eigenschaften, die der Klasse gehören |
| Operationen | Verhaltensmerkmale, die Aufrufparameter angeben |
| Vorlagenparameter | Formale Parameter für die Vorlagenbindung |
Klasse <>

Definition: Eine Art Klasse, die als Container für Aufzählungswerte dient. Zum Beispiel enthält eine Aufzählung Farbe enthält Aufzählungswerte rot, grün, und blau.
Klasse <>

Definition: Eine Schnittstelle ist eine Art Klassifikator, der eine Deklaration einer zusammenhängenden Menge öffentlicher Merkmale und Verpflichtungen darstellt. Eine Schnittstelle definiert einen Vertrag; jedes Exemplar eines Klassifikators, das die Schnittstelle realisiert, muss diesen Vertrag erfüllen.
Wichtige Merkmale:
-
Schnittstellen sind Deklarationen und nicht instanziierbar
-
Wird von Instanzen instanzierbarer Klassifikatoren implementiert
-
Eine Klassifikator kann mehrere Schnittstellen implementieren
-
Kann Einschränkungen und Protokollspezifikationen enthalten
Klasse <>

Definition: Eine Art Klasse, die einen vordefinierten Datentyp darstellt. Zum Beispiel eine boolesche Klasse (Typ).
Hinweis

Definition: Ein Hinweis (Kommentar) ermöglicht es, verschiedene Bemerkungen an Elemente anzuhängen. Ein Kommentar hat keine semantische Bedeutung, kann aber Informationen enthalten, die für einen Modellierer nützlich sind.
Einschränkung

Definition: Eine Bedingung oder Einschränkung, die in natürlicher Sprache oder in einer maschinenlesbaren Sprache formuliert ist, um Teile der Semantik eines Elements zu definieren.
Eigenschaften:
| Eigenschaft | Beschreibung |
|---|---|
| Name | Optionaler Name der Einschränkung |
| Ausdruck | Die Bedingung, die erfüllt sein muss, damit die Einschränkung erfüllt ist |
| Dokumentation | Beschreibung der Einschränkung |
Zusammenarbeit

Definition: Eine Zusammenarbeit wird als Art von Klassifikator dargestellt und definiert eine Menge kooperierender Entitäten, die von Instanzen (ihre Rollen) übernommen werden, sowie eine Menge von Verbindungen, die Kommunikationspfade zwischen den beteiligten Instanzen definieren.
Modell
Definition: Ein Paket auf oberster Ebene, das das gesamte Modell oder einen wesentlichen Teil davon enthält.
NARY
Definition: Stellt eine n-äre Assoziation dar, die mehrere Klassifizierer gleichzeitig verbindet.
Beziehungstypen
Assoziationsbeziehungen
Assoziation (ohne Aggregation)

Definition: Eine Assoziation spezifiziert eine semantische Beziehung, die zwischen typisierten Instanzen auftreten kann. Sie verfügt über mindestens zwei Enden, die durch Eigenschaften dargestellt werden, wobei jedes Ende mit dem Typ des Endes verknüpft ist.
Wichtige Eigenschaften:
| Eigenschaft | Beschreibung |
|---|---|
| Name | Der Name der Assoziation |
| Sichtbarkeit | Namespace-Aussehen und Zugänglichkeit |
| Assoziationsende von/bis | Quelle und Ziel der Assoziation |
| Abstrakt | Wenn wahr, ist die Assoziation unvollständig und nicht instanziierbar |
| Blatt | Wenn wahr, kann die Assoziation nicht weiter spezialisiert werden |
| Abgeleitet | Gibt an, ob aus anderen Modell-Elementen abgeleitet |
Aggregation (geteilte Assoziation)

Definition: Eine Art von Assoziation, bei der eines ihrer Enden markiert istgeteiltals eine Art Aggregation, was bedeutet, dass sie eine geteilte Aggregation hat (Ganzes-Teil-Beziehung, bei der die Teile unabhängig voneinander existieren können).
Komposition (Komposit-Assoziation)

Definition: Eine starke Form der Aggregation, bei der eine Teilinstanz gleichzeitig in maximal einem Komposit enthalten sein kann. Wenn ein Komposit gelöscht wird, werden seine Teile normalerweise ebenfalls gelöscht.
Wichtige Merkmale:
-
Teile können nicht gleichzeitig mehreren Kompositen angehören
-
Das Löschen des Kompositen löscht die Teile normalerweise ebenfalls
-
Teile können vor der Löschung des Kompositen entfernt werden
-
Kompositionen können gerichtete azyklische Graphen mit transitiver Löschung bilden
Assoziationsklasse

Definition: Ein Modell-Element, das sowohl Assoziations- als auch Klassen-Eigenschaften besitzt. Eine Assoziationsklasse kann als eine Assoziation betrachtet werden, die zusätzlich Klasseneigenschaften hat, oder als eine Klasse, die zusätzlich Assoziationseigenschaften besitzt.
Verwandte Ressource: Zeichnen der Assoziationsklasse
Abhängigkeitsbeziehungen
Abhängigkeit

Definition: Eine Beziehung, die bedeutet, dass ein einzelnes oder eine Menge von Modell-Elementen andere Modell-Elemente für ihre Spezifikation oder Implementierung benötigen.
Eigenschaften:
| Eigenschaft | Beschreibung |
|---|---|
| Lieferant | Unabhängiges Element(e) in der Beziehung |
| Kunde | Abhängiges Element(e) in der Beziehung |
| Sichtbarkeit | Namespace-Erscheinung und Zugänglichkeit |
| Zuordnung | Optionaler Ausdruck, der die Beziehung angibt |
Abstraktion

Definition: Eine Beziehung, die zwei Elemente oder Mengen von Elementen verknüpft, die dasselbe Konzept auf unterschiedlichen Abstraktionsstufen oder aus unterschiedlichen Blickwinkeln darstellen.
Realisierung

Definition: Eine spezialisierte Abstraktionsbeziehung zwischen zwei Mengen von Modell-Elementen, wobei eines die Spezifikation (der Lieferant) darstellt und das andere die Implementierung des letzteren (der Kunde).
Anwendungsfälle: Schrittweise Verfeinerung, Optimierungen, Transformationen, Vorlagen, Modellsynthese, Rahmenwerkszusammensetzung
Generalisierung

Definition: Eine taxonomische Beziehung zwischen einem allgemeineren Klassifikator und einem spezifischeren Klassifikator. Jede Instanz des spezifischeren Klassifikators ist auch eine indirekte Instanz des allgemeineren Klassifikators.
Schlüssel-Eigenschaft:
| Eigenschaft | Beschreibung |
|---|---|
| Ersetzbar | Wenn wahr, kann der spezifische Klassifikator den allgemeinen Klassifikator zur Laufzeit ersetzen |
Verwendung

Definition: Eine Beziehung, bei der ein Element ein anderes Element (oder eine Menge von Elementen) für seine vollständige Implementierung oder Ausführung benötigt.
Zugriff

Definition: Ein Element-Import, definiert als gerichtete Beziehung zwischen einem importierenden Namespace und einem paketierbaren Element. Der Name des paketierbaren Elements oder dessen Alias wird dem Namespace des importierenden Namespace hinzugefügt.
Notation:
-
<<import>>Schlüsselwort für öffentliche Sichtbarkeit -
<<access>>Schlüsselwort für private Sichtbarkeit
Import

Definition: Ein Paketimport wird als gerichtete Beziehung definiert, die ein Paket identifiziert, dessen Mitglieder von einem Namensraum importiert werden sollen.
Berechtigung

Definition: Eine Art Abhängigkeit, die einem Modell-Element die Berechtigung erteilt, auf Elemente in einem anderen Namensraum zuzugreifen.
Instanziierung

Definition: Eine Nutzungshängigkeit zwischen Klassifizierern, die anzeigt, dass Operationen am Client Instanzen des Lieferanten erzeugen.
Bindung

Definition: Eine TemplateBindung ist eine gerichtete Beziehung von einem gebundenen templatefähigen Element zur Template-Signatur des Zieltemplates. Eine TemplateBindung besitzt eine Menge von Template-Parameter-Ersetzungen.
Ableiten

Definition: Legt eine Ableitungsbeziehung zwischen Modell-Elementen fest, die gewöhnlich, aber nicht notwendigerweise, vom selben Typ sind. Eine abgeleitete Abhängigkeit legt fest, dass der Client aus dem Lieferanten berechnet werden kann.
Verfeinern

Definition: Legt eine Verfeinerungsbeziehung zwischen Modell-Elementen auf unterschiedlichen semantischen Ebenen fest, beispielsweise Analyse und Design.
Anwendungsfälle: Transformationen von Analyse zu Design, Modellentwicklung
Spur

Definition: Legt eine Spur-Beziehung zwischen Modell-Elementen oder Mengen von Modell-Elementen fest, die dasselbe Konzept in verschiedenen Modellen darstellen.
Hauptanwendung: Verfolgung von Anforderungen und Änderungen über Modelle hinweg; die Abbildung ist gewöhnlich informell und bidirektional
Substitution

Definition: Eine Beziehung zwischen zwei Klassifizierern, die bedeutet, dass der substituierende Klassifizierer den durch den Vertragsklassifizierer festgelegten Vertrag erfüllt.
Implikation: Instanzen des ersetzenden Klassifiers sind zur Laufzeit austauschbar, wo Instanzen des Vertragsklassifiers erwartet werden.
Zusammenführen

Definition: Ein Paketzusammenführen ist eine gerichtete Beziehung zwischen zwei Paketen, die anzeigt, dass die Inhalte der beiden Pakete zusammengeführt werden sollen.
Wichtige Merkmale:
-
Ähnlich wie Generalisierung, jedoch für Paketinhalte
-
Wird verwendet, wenn Elemente in verschiedenen Paketen dasselbe Konzept darstellen
-
Ermöglicht die schrittweise Erweiterung grundlegender Konzepte
-
Besonders nützlich bei Metamodellierung und der Definition von UML-Metamodellen
Klassenvarianten und Stereotypen
ORM-spezifische Klassen
Klasse <>

Definition: Eine spezielle Form der Klasse, die verwendet werden kann, um ein Objektmodell einer relationalen Datenbank zu modellieren. ORM-Code kann aus einer Reihe von ORM-Persistierbaren Klassen generiert werden.
Zusätzliche Eigenschaften:
| Eigenschaft | Beschreibung |
|---|---|
| ORM-Klassendetails | Einstellungen, die die ORM-Codegenerierung beeinflussen |
| Geschäfts-Schlüssel | Wird zur Generierung der equals() und hashCode()-Operationen verwendet |
| ORM-Abfrage | ORM-Qualifizierer und benannte Abfragen definieren |
Klasse <>

Definition: Eine spezielle Form der Klasse, die gemeinsame Attribute von Unterklassen von ORM-Persistierbaren Klassen erfasst.
Klasse <>

Definition: Eine Benutzertyp-Klasse definiert einen Objekttyp für das Objektmodell, der im generierten ORM-Code zugänglich ist und als Spalte in der Datenbank gespeichert wird, anstatt als Entität.
Verwandter Ressource: Hibernate-Benutzertyp-Unterstützung
Klasse <>

Definition: Ein ORM-Parameter-Typ bietet Ihnen die Möglichkeit, die Richtigkeit der Daten durch Implementierung von Überprüfungen in den generierten ORM-Code zu gewährleisten.
Klasse <>

Definition: Eine spezielle Form der Klasse zur Modellierung von EJB-Entitäts-Beans.
Zusätzliche Eigenschaften:
| Eigenschaft | Beschreibung |
|---|---|
| EJB-Klassen-Code-Details | EJB-bezogene Attribute für die Codegenerierung |
Eigenschaften und Konfiguration
Referenz gemeinsamer Klasseneigenschaften
| Eigenschaft | Gilt für | Beschreibung |
|---|---|---|
| Name | Alle Elemente | Bezeichner für das Modell-Element |
| Eltern | Klassen, Schnittstellen | Besitzendes Modell-Element |
| Sichtbarkeit | Die meisten Elemente | Steuert das Erscheinungsbild des Namensraums: öffentlich, privat, geschützt, Paket |
| Abstrakt | Klassen, Assoziationen | Wenn wahr, ist das Element unvollständig und nicht direkt instanziierbar |
| Blatt | Klassen, Assoziationen | Wenn wahr, kann das Element nicht weiter spezialisiert werden |
| Wurzel | Klassen | Gibt an, ob das Element keine Vorfahren hat |
| Aktiv | Klassen | Bestimmt, ob Objekte aktiv (konkurrierend) oder passiv sind |
| Geschäftsmodell | Klassen | Kennzeichen, um als „Geschäftsklasse“ zu markieren |
| Attribute | Klassen | Direkte Eigenschaften, die von der Klasse besessen werden |
| Operationen | Klassen | Verhaltensmerkmale mit Parametern und Beschränkungen |
| Vorlagenparameter | Vorlagefähige Elemente | Formale Parameter für generische/parametrisierte Elemente |
| Abgeleitet | Assoziationen | Gibt an, ob das Element aus anderen Modell-Elementen abgeleitet ist |
Einstellungen für die Codegenerierung
Java-spezifische Konfiguration
-
Java-Anmerkungen: Metadaten, die dem Java-Quellcode zur Anmerkungszwecken hinzugefügt werden
-
Zweirichtungsingenieurwesen: Java-Code generieren und synchronisieren
ORM-spezifische Konfiguration
-
ORM-Abfrage: Qualifizierer und benannte Abfragen für persistierbare Klassen definieren
-
Geschäfts-Schlüssel: Felder konfigurieren, die zur Generierung von equals()/hashCode() verwendet werden
-
Spaltenzuordnung: Datenbankspaltennamen und -typen angeben
Verwandte UML-Diagrammtypen
Klassendiagramme integrieren sich mit anderen UML-Diagrammen für eine umfassende Systemmodellierung:
| Diagrammtyp | Zweck | Link |
|---|---|---|
| Use-Case-Diagramm | Funktionale Anforderungen erfassen | Use-Case-Diagramm |
| Sequenzdiagramm | Dynamische Interaktionen über die Zeit modellieren | Sequenzdiagramm |
| Kommunikationsdiagramm | Zeige Objektinteraktionen und Verbindungen | Kommunikationsdiagramm |
| Zustandsmaschinen-Diagramm | Modelliere Lebenszyklus und Zustände von Objekten | Zustandsmaschinen-Diagramm |
| Aktivitätsdiagramm | Stelle Workflows und Prozesse dar | Aktivitätsdiagramm |
| Komponentendiagramm | Zeige physische Softwarekomponenten | Komponentendiagramm |
| Bereitstellungsdigramm | Modelliere die Bereitstellung von Hardware und Software | Bereitstellungsdigramm |
| Paketdiagramm | Ordne Modell-Elemente in Pakete | Paketdiagramm |
| Objektdiagramm | Zeige Instanzen zu einem bestimmten Zeitpunkt | Objektdiagramm |
| Komposite Strukturdiagramm | Modelliere die interne Struktur von Klassifizierern | Komposite Strukturdiagramm |
| Zeitdiagramm | Fokus auf zeitliche Beschränkungen | Zeitdiagramm |
| Interaktionsübersichtsdiagramm | Kombiniere Interaktions- und Aktivitätsdiagramme | Interaktionsübersichtsdiagramm |
Referenzliste
- Primäre Diagrammverweise
-
Use-Case-Diagramm: Visuelle Darstellung der Systemfunktionalität aus Sicht des Benutzers, die Akteure und ihre Ziele erfasst.
-
Sequenzdiagramm: Zeigt Objektinteraktionen in zeitlicher Reihenfolge an und betont die Reihenfolge der Nachrichten.
-
Kommunikationsdiagramm: Zeigt Objektinteraktionen mit Schwerpunkt auf strukturellen Beziehungen zwischen Objekten.
-
Zustandsmaschinen-Diagramm: Modelliert das dynamische Verhalten eines Objekts über dessen Lebenszykluszustände und Übergänge.
-
Aktivitätsdiagramm: Stellt Workflows, Geschäftsprozesse und operative Schritte mit Steuerfluss dar.
-
Komponentendiagramm: Zeigt physische Softwarekomponenten, deren Schnittstellen und Abhängigkeiten.
-
Bereitstellungsdigramm: Zeigt Hardwareknoten, Softwareartefakte und deren Bereitstellungsbeziehungen.
-
Paketdiagramm: Ordnet Modellelemente in hierarchische Pakete zur Modularität und Namensraumverwaltung.
-
Objektdiagramm: Zeigt Instanzen von Klassen und deren Verknüpfungen zu einem bestimmten Zeitpunkt an.
-
Kompositstrukturdiagramm: Modelliert die interne Struktur von Klassifizierern einschließlich Teilen, Ports und Verbindern.
-
Zeitdiagramm: Konzentriert sich auf Zeitbeschränkungen und Zustandsänderungen über präzise Zeitintervalle.
-
Interaktionsübersichtsdiagramm: Kombiniert Interaktionsdiagramme mit Aktivitätsdiagramm-Notation zur Darstellung von Interaktionsflüssen auf hoher Ebene.
- Referenzen zur Klassendiagramm-Notation
-
Abstraktion: Beziehung zwischen Elementen, die dasselbe Konzept auf unterschiedlichen Abstraktionsstufen darstellen.
-
Zugriff: Element-Import-Beziehung, die die Sichtbarkeit importierter paketierbarer Elemente steuert.
-
Aggregation (geteilte Assoziation): Ganzzahl-Teil-Beziehung, bei der Teile unabhängig vom Ganzen existieren können.
-
Assoziation (ohne Aggregation): Semantische Beziehung zwischen typisierten Instanzen mit navigierbaren Enden.
-
Assoziationsklasse: Modell-Element, das Assoziations- und Klassen-Eigenschaften kombiniert, um Attributinformationen für Beziehungen bereitzustellen.
-
Bindung: Vorlagen-Bindungs-Beziehung mit Parameterersetzungen für generische Elemente.
-
Klasse: Kern-Klassifikator, der Objekte mit gemeinsamen Merkmalen, Attributen und Operationen beschreibt.
-
Klasse <>: Container-Klasse für Aufzählungs-Literale, die feste Wertemengen darstellen.
-
Klasse <>: Vertrags-Spezifikation, die öffentliche Merkmale für die Implementierung von Klassifikatoren deklariert.
-
Klasse <>: Vorgegebene Datentyp-Klasse, die grundlegende Sprachtypen darstellt.
-
Klasse <>: Datenbank-zugeordnete Klasse, die die ORM-Codegenerierung und Persistenz unterstützt.
-
Klasse <>: Abstrakte Basisklasse zur gemeinsamen Nutzung von gemeinsamen ORM-Attributen über persistierbare Unterklassen hinweg.
-
Klasse <>: Benutzerdefinierter Typ, der als Datenbankspalte anstelle einer Entitätstabelle persistiert wird.
-
Klasse <>: Parametrisierter Typ, der die Validierung der Datenkorrektheit im ORM-Code ermöglicht.
-
Klasse <>: EJB-Entitäts-Bean-Modellierungsklasse für Unternehmens-Java-Anwendungen.
-
Zusammenarbeit: Klassifikator, der kooperierende Rollen und Kommunikationspfade für interagierende Instanzen definiert.
-
Komposition (zusammengesetzte Assoziation): Starke Ganzzahl-Teil-Beziehung mit exklusiver Eigentumschaft und kaskadierendem Löschen.
-
Einschränkung: Bedingung oder Einschränkung, die die Semantik von Modellelementen festlegt.
-
Abhängigkeit: Beziehung, die anzeigt, dass ein Element ein anderes für Spezifikation oder Implementierung benötigt.
-
Ableiten: Beziehung, die angibt, dass das Client-Element aus dem Lieferanten-Element berechenbar ist.
-
Generalisierung: Vererbungsbeziehung, bei der ein spezifischer Klassifikator Merkmale von einem allgemeinen Klassifikator erbt.
-
Import: Paket-Import-Beziehung, die Paketmitglieder für den importierenden Namensraum verfügbar macht.
-
Instanziierung: Abhängigkeit, die anzeigt, dass Client-Operationen Instanzen des Lieferanten-Klassifikators erzeugen.
-
Zusammenführen: Paketzusammenführung, die Inhalte zweier Pakete kombiniert, um Konzepte schrittweise zu erweitern.
-
Modell: Oberste Container für die Organisation von Modellelementen und Paketen.
-
N-ARY: N-ärer Assoziation, die mehrere Klassifikatoren gleichzeitig verbindet.
-
Notiz: Kommentarelement zum Anhängen von nicht-semantischen Bemerkungen an Modellelemente.
-
Berechtigung: Abhängigkeit, die Zugriffsrechte auf Elemente in einem anderen Namensraum gewährt.
-
Realisierung: Spezialisierte Abstraktion, bei der der Client die durch den Lieferanten definierte Spezifikation implementiert.
-
Verfeinern: Beziehung zwischen Modellelementen auf unterschiedlichen semantischen Ebenen wie Analyse und Design.
-
Substitution: Beziehung, die anzeigt, dass ein ersetztender Klassifikator der Spezifikation des Vertrags-Klassifikators entspricht.
-
Verfolgung: Beziehungstracking derselben Konzepte über verschiedene Modelle hinweg, hauptsächlich für die Anforderungsverwaltung.
-
Verwendung: Abhängigkeit, bei der das Client-Element das Lieferanten-Element für die vollständige Implementierung oder Ausführung benötigt.
- Tutorials und Ressourcenverweise
-
Zeichnen einer Assoziationsklasse: Schritt-für-Schritt-Anleitung zum Erstellen von Assoziationsklassen in Visual Paradigm.
-
Java-Code generieren und synchronisieren: Tutorial zur bidirektionalen Entwicklung zwischen Klassendiagrammen und Java-Implementierung.
-
Hibernate-Benutzertyp-Unterstützung: Ressource zum Implementieren benutzerdefinierter Hibernate-Benutzertypen mit ORM-Persistable-Klassen.
- Standardverweise
-
Object Management Group – Unified Modeling Language: Offizielle UML-Spezifikationsquelle des Standardisierungsorgans, das UML regelt.
-
Definition der Notationen ist zitiert aus Object Management Group Unified Modeling Language (OMG UML) Superstruktur Version 2.2 und frühere Versionen (für Notationen, die in der neuesten Spezifikation nicht mehr existieren).
- Diese Anleitung basiert auf der UML-Klassendiagrammdokumentation von Visual Paradigm. Für die aktuellsten Spezifikationen sollten Sie stets die offiziellen OMG-UML-Standards heranziehen.











