Inhaltsverzeichnis

zurĂĽck

Aufgabe: Klassendiagramm entwerfen

Du sollst ein System fĂĽr eine Bibliothek modellieren. Folgende Anforderungen sind gegeben:

Aufgabenstellung:

  1. Entwirf ein UML-Klassendiagramm mit allen relevanten Klassen, Attributen und Beziehungen.
  2. Kennzeichne die Sichtbarkeit der Attribute.
  3. Welche Klasse sollte Methoden enthalten – z. B. ausleihen() oder zurückgeben()?

Lösung:

classDiagram class Bibliothek { name buchHinzufuegen() benutzerRegistrieren() ausleihen() zurueckgeben() findeBuch() } class Buch { titel autor isbn status istVerfuegbar() } class Benutzer { benutzerId name anzahlAktiverAusleihen() } class Ausleihe { ausleihDatum faelligAm rueckgabeDatum istUeberfaellig() dauerInTagen() } Bibliothek "1" o-- "0.." Buch Bibliothek "1" o-- "0.." Benutzer Bibliothek "1" o-- "0..*" Ausleihe Ausleihe "1" --> "1" Buch Ausleihe "1" --> "1" Benutzer Benutzer "1" --> "0..*" Ausleihe


Aufgabe : Beziehungstypen erkennen

Gegeben sind folgende Klassen:

Beschreibung:

Aufgabenstellung:

  1. Zeichne das Klassendiagramm mit den passenden Beziehungstypen.
  2. Welche Beziehung besteht zwischen Rechnung und Position? Aggregation oder Komposition?
  3. 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):

classDiagram class Rechnung class Position class Produkt Rechnung "1" *-- "1..*" Position Position "0..*" --> "1" Produkt

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):

classDiagram class Rechnung class Position class Produkt Rechnung "1" o-- "1..*" Position Position "0..*" --> "1" Produkt


Aufgabe 06.10.2025

classDiagram class Abteilung { +abteilungsId : int +name : string } class Mitarbeiter { +mitarbeiterId : int +vorname : string +nachname : string +email : string } class Techniker { +technikerId : int +skillset : string +telefonDurchwahl : string } class Supportanfrage { +ticketNr : string +status : string +erstelltAm : Date +kurzbeschreibung : string } Abteilung "1" o-- "0..*" Mitarbeiter : umfasst Mitarbeiter "1..*" --> "0..*" Supportanfrage : erstellt Supportanfrage "0..*" o-- "0..1" Techniker : zugewiesenAn Mitarbeiter <|-- Techniker

b) Assoziation vs. Aggregation (am Ticketsystem erklärt)

c) 1:n oder m:n zwischen „Mitarbeiter“ und „Supportanfrage“?