Klassendiagramme

Lernziele:

  • Statische Struktur von Softwaresystemen erfassen.
  • Klassen, Attribute und Methoden definieren und anwenden.
  • Beziehungen (Assoziation, Vererbung, Aggregation, Komposition) modellieren.

Struktur der objektorientierten Software

Klassendiagramme sind das Rückgrat der objektorientierten Softwareentwicklung. Es definiert die Blaupausen (Klassen) für Objekte, deren Eigenschaften (Attribute) und Verhaltensweisen (Methoden) sowie deren Interaktionen mit anderen Klassen. 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.

Merksatz: Ein Klassendiagramm beschreibt die statische Struktur eines Systems durch Klassen, Attribute, Methoden und deren Beziehungen.

OOA-Methodik: Vom Text zum Modell

Für den Entwurf aus einer Problembeschreibung dienen zwei Kernanalysen der objektorientierten Analyse (OOA):

  • Nominalphrasenanalyse: Identifikation von Substantiven als Kandidaten für Klassen (z. B. Kunde) oder Attribute (z. B. Name).
  • Verbalphrasenanalyse: Identifikation von Verben als Kandidaten für Methoden (z. B. bezahlen()).

Beispiel: "Ein Kunde eröffnet ein Konto." → Kunde und Konto sind Klassen, eröffnet wird eine Methode.

Beziehungen im Überblick

Assoziation

  • Definition: Allgemeine Verbindung zwischen Klassen zur Interaktion.
  • Multiplizität: Anzahl der beteiligten Objekte (z. B. 1..*, 0..1).
  • Beispiel: Ein Student besucht 1..* Vorlesungen.
  • 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: Eine Unterklasse erbt Attribute und Methoden einer Oberklasse.
  • Symbol: Durchgezogene Linie mit einer leeren Pfeilspitze zur Oberklasse.
  • 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-Diagramme zur Vererbung.
UML Vererbung Beispiel

Abbildung 1: Beispiel für Vererbung (Fahrzeug → Auto/Motorrad)

Aggregation vs. Komposition

Typ Definition Symbol (am Ganzen)
Aggregation "Teil-Ganzes"-Beziehung. Teile existieren unabhängig vom Ganzen (Existenzabhängigkeit: nein). Leere Raute
Komposition Starke "Teil-Ganzes"-Beziehung. Teile existieren nicht ohne das Ganze (Existenzabhängigkeit: ja). Ausgefüllte Raute
  • Beispiel für eine Aggregation: 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.
  • Beispiel für eine Komposition: 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.

Übung: Online-Shop Modellierung

Entwirf ein Klassendiagramm für einen Online-Shop mit folgenden Anforderungen:

  • 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.
Definiere für jede dieser Entitäten passende Attribute (z.B. für Kunde: Name, E-Mail; für Produkt: Name, Preis, Beschreibung; für Bestellung: Bestelldatum, Status; für Warenkorb: Artikelanzahl) und mindestens eine wichtige Methode (z.B. für Kunde: bestellen(); für Produkt: Preis anzeigen(); für Bestellung: Gesamtpreis berechnen(); für Warenkorb: Produkt hinzufügen()).
Stelle die Beziehungen zwischen diesen Klassen dar (z.B. Kunde hat eine Beziehung zu Bestellung und Warenkorb, Bestellung enthält Produkte, Warenkorb enthält Produkte). Betrachte die Beziehungen sorgfältig: Ist es eine Assoziation, Aggregation oder Komposition?

Fokus: Unterscheidung zwischen Aggregation und Komposition.

Bearbeitungszeit: 45 Minuten


Nächster Schritt

Nach der statischen Struktur betrachten wir nun das dynamische Verhalten von Systemen.

Weiter zu: Aktivitätsdiagramm →