**Dies ist eine alte Version des Dokuments!**
Aufgabe: Klassendiagramm entwerfen
Du sollst ein System für eine Bibliothek modellieren. Folgende Anforderungen sind gegeben:
- Eine Bibliothek verwaltet mehrere Bücher.
- Jedes Buch hat einen Titel, Autor, ISBN und Status (verfügbar/verliehen).
- Ein Benutzer kann Bücher ausleihen.
- Die Klasse Ausleihe dokumentiert, welches Buch wann von welchem Benutzer ausgeliehen wurde.
Aufgabenstellung:
- Entwirf ein UML-Klassendiagramm mit allen relevanten Klassen, Attributen und Beziehungen.
- Kennzeichne die Sichtbarkeit der Attribute.
- Welche Klasse sollte Methoden enthalten – z. B. ausleihen() oder zurückgeben()?
Lösung:
Aufgabe : Beziehungstypen erkennen
Gegeben sind folgende Klassen:
- Rechnung
- Position
- Produkt
Beschreibung:
- Eine Rechnung besteht aus mehreren Positionen.
- Jede Position bezieht sich auf genau ein Produkt.
- Ein Produkt kann auf mehreren Rechnungen erscheinen.
Aufgabenstellung:
- Zeichne das Klassendiagramm mit den passenden Beziehungstypen.
- Welche Beziehung besteht zwischen Rechnung und Position? Aggregation oder Komposition?
- Wie würde sich die Modellierung ändern, wenn Position ohne Rechnung nicht existieren kann?
Lösung
1) Klassendiagramm (mit Beziehungstypen & Multiplizitäten)
Empfohlen (fachlich korrekt: Komposition zwischen Rechnung und Position): < mermaid> classDiagram class Rechnung class Position class Produkt
Rechnung „1“ – „1..“ Position Position „0..*“ –
> "1" Produkt </mermaid>
Hinweis: Dadurch ergibt sich indirekt eine n:m-Beziehung zwischen Rechnung und Produkt (über Position).
2) Aggregation oder Komposition?
Komposition. Positionen sind Teil der Rechnung (Lebenszyklus gebunden); löscht man die Rechnung, verschwinden die Positionen.
3) Wenn Position ohne Rechnung nicht existieren kann …
… dann ist genau das die Komposition (gefüllter Diamant).
Falls du zuvor Aggregation modelliert hattest, tausche einfach o-- gegen *-- aus:
Alternative (Aggregation, nur falls Positionen eigenständig existieren dürften):