Klassendiagramme
Was du heute lernst:
- Die Bedeutung von Klassendiagrammen für die statische Struktur von Software erfassen.
- Die Elemente eines Klassendiagramms (Klasse, Attribute, Methoden) definieren.
- Die verschiedenen Beziehungen zwischen Klassen (Assoziation, Vererbung, Aggregation, Komposition) erkennen und modellieren.
Einleitung: Die Bausteine des Codes verstehen
Klassendiagramme sind das Rückgrat der objektorientierten Softwareentwicklung. Sie visualisieren die statische Struktur eines Systems, indem sie Klassen, ihre Eigenschaften (Attribute) und Verhaltensweisen (Methoden) sowie die Beziehungen zwischen ihnen darstellen. Dieses Verständnis ist entscheidend, um komplexe Softwareprojekte zu planen, zu entwerfen und zu dokumentieren. Mit Klassendiagrammen können wir sicherstellen, dass alle Beteiligten ein klares Bild von der Architektur des Systems haben, bevor auch nur eine Zeile Code geschrieben wird.
Der Weg vom Text zum Modell: Analyse-Methoden
Wie kommen wir von einer Problembeschreibung zu einem fertigen Klassendiagramm? Dafür nutzen wir zwei einfache, aber effektive Methoden der objektorientierten Analyse (OOA):
- Nominalphrasenanalyse (Wer oder was?): Wir markieren alle Substantive (Nomen) im Text. Diese sind Kandidaten für Klassen (z. B. Kunde, Konto) oder deren Attribute (z. B. Name, Kontostand).
- Verbalphrasenanalyse (Was passiert?): Wir markieren alle Verben (Tätigkeitswörter) im Text. Diese beschreiben das Verhalten der Objekte und werden zu Methoden (z. B. einzahlen(), abbuchen()).
Beispiel: "Ein Kunde eröffnet ein Konto." → Kunde und Konto sind Klassen, eröffnet wird eine Methode.
Grundlagen des UML-Klassendiagramms
- Definition: Ein Diagrammtyp in der Unified Modeling Language (UML), der die Struktur eines Systems durch die Darstellung von Klassen, deren Attributen, Methoden und den Beziehungen zwischen den Klassen beschreibt.
- Elemente:
- Klassen: Repräsentieren Objekte oder Konzepte im System. Jede Klasse ist in drei Bereiche unterteilt: Name, Attribute und Methoden.
- Attribute: Eigenschaften oder Daten, die eine Klasse beschreibt. Sie werden mit Sichtbarkeit (z.B. +, -, #), Namen und Typ angegeben.
- Methoden: Funktionen oder Operationen, die von der Klasse ausgeführt werden können. Sie werden mit Sichtbarkeit, Namen, Parametern und Rückgabetyp angegeben.
- Beziehungen: Verbindungen zwischen Klassen, wie Assoziationen, Vererbungen und Aggregationen.
- Beispiel: Ein Klassendiagramm für ein Bibliothekssystem könnte Klassen wie "Buch", "Autor" und "Benutzer" enthalten, mit entsprechenden Attributen und Methoden.
Beziehungen in Klassendiagrammen
Assoziation
- Definition: Eine Assoziation ist eine Beziehung zwischen zwei oder mehr Klassen, die beschreibt, wie Objekte dieser Klassen miteinander interagieren oder verbunden sind.
- Merkmale:
- Rollen: Jede Klasse in einer Assoziation kann eine Rolle spielen, die beschreibt, wie sie an der Beziehung beteiligt ist.
- Multiplizität: Gibt an, wie viele Objekte einer Klasse mit Objekten einer anderen Klasse assoziiert sein können (z. B. 1:1, 1:n, m:n).
- Navigierbarkeit: Zeigt an, ob und in welche Richtung die Beziehung zwischen den Klassen navigierbar ist.
- Beispiel: In einem Klassendiagramm für ein Bibliothekssystem könnte eine Assoziation zwischen den Klassen "Buch" und "Autor" bestehen, wobei ein Buch von einem oder mehreren Autoren geschrieben werden kann (1:n-Beziehung).
- Benachbarte Themen: Aggregation, Komposition, Vererbung. Sieh dir dieses UML-Ressourcen-Portal für weitere Beispiele an.
Vererbung (Generalisierung)
- Definition: Vererbung ist ein Mechanismus, durch den eine Klasse (Unterklasse oder abgeleitete Klasse) Eigenschaften und Methoden einer anderen Klasse (Oberklasse oder Basisklasse) erbt. Dies fördert die Wiederverwendbarkeit und Strukturierung von Code.
- Merkmale:
- Allgemeinheit: Die Oberklasse definiert allgemeine Attribute und Methoden, die von den Unterklassen spezifiziert oder erweitert werden können.
- Spezialisierung: Unterklassen können spezifische Attribute und Methoden hinzufügen oder die geerbten Methoden überschreiben.
- Symbolik: In UML wird die Vererbung durch eine durchgezogene Linie mit einem leeren Pfeil an der Oberklasse dargestellt.
- Beispiel: In einem Klassendiagramm könnte eine Oberklasse "Fahrzeug" Attribute wie "Farbe" und "Modell" haben, während die Unterklassen "Auto" und "Motorrad" spezifische Attribute wie "Anzahl der Türen" oder "Typ des Lenkers" hinzufügen.
- Benachbarte Themen: Polymorphismus, Kapselung, Designmuster. Weitere Informationen findest du unter UML-Diagrammen zur Vererbung.
Aggregation
- Definition: Aggregation ist eine spezielle Form der Assoziation, die eine "Teil-Ganzes"-Beziehung zwischen zwei Klassen beschreibt, wobei das Teil (die aggregierte Klasse) unabhängig vom Ganzen (der aggregierenden Klasse) existieren kann.
- Merkmale:
- Schwache Beziehung: Das Teil kann auch ohne das Ganze existieren. Zum Beispiel kann ein "Rad" unabhängig von einem "Auto" existieren.
- Symbolik: In UML wird Aggregation durch eine durchgezogene Linie mit einer leeren Raute an der Seite des Ganzen dargestellt.
- Beispiel: In einem Klassendiagramm könnte eine Aggregation zwischen den Klassen "Bibliothek" und "Buch" bestehen, wobei eine Bibliothek mehrere Bücher enthält, aber die Bücher auch unabhängig von der Bibliothek existieren können.
- Benachbarte Themen: Komposition, Assoziation, Vererbung.
Komposition
- Definition: Komposition ist eine spezielle Form der Aggregation, die eine starke "Teil-Ganzes"-Beziehung zwischen zwei Klassen beschreibt, wobei das Teil (die kompositionale Klasse) ohne das Ganze (die kompositionale Klasse) nicht existieren kann.
- Merkmale:
- Starke Beziehung: Das Teil ist eng mit dem Ganzen verbunden und kann nicht unabhängig existieren. Wenn das Ganze zerstört wird, werden auch die Teile zerstört.
- Symbolik: In UML wird Komposition durch eine durchgezogene Linie mit einer ausgefüllten Raute an der Seite des Ganzen dargestellt.
- Beispiel: In einem Klassendiagramm könnte eine Komposition zwischen den Klassen "Haus" und "Zimmer" bestehen, wobei ein Zimmer nur existiert, solange das Haus existiert. Wenn das Haus abgerissen wird, werden auch die Zimmer entfernt.
- Benachbarte Themen: Aggregation, Assoziation, Vererbung.
Übungsaufgabe: Entwirf die Klassen für ein einfaches Online-Shop-System
Aufgabenstellung:
Entwirf ein Klassendiagramm für einen einfachen Online-Shop. Berücksichtige mindestens die folgenden Entitäten und ihre Beziehungen:
- Ein Kunde, der Produkte bestellen kann.
- Ein Produkt, das im Shop angeboten wird.
- Eine Bestellung, die mehrere Produkte enthalten kann.
- Ein Warenkorb, der Produkte für einen Kunden enthält, bevor er zur Bestellung wird.
Schwierigkeitsgrad: schwer
Erwartete Bearbeitungszeit: 45 Minuten