allgemein:test:uebungsaufgaben
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| allgemein:test:uebungsaufgaben [02.10.2025 12:27] – lars | allgemein:test:uebungsaufgaben [06.10.2025 11:09] (aktuell) – [Aufgabe 06.10.2025] lars | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | **Aufgabe | + | [[..: |
| + | |||
| + | **Aufgabe: Klassendiagramm entwerfen** | ||
| Du sollst ein System für eine Bibliothek modellieren. Folgende Anforderungen sind gegeben: | Du sollst ein System für eine Bibliothek modellieren. Folgende Anforderungen sind gegeben: | ||
| * Eine Bibliothek verwaltet mehrere Bücher. | * Eine Bibliothek verwaltet mehrere Bücher. | ||
| Zeile 75: | Zeile 78: | ||
| Benutzer " | Benutzer " | ||
| </ | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **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: | ||
| + | |||
| + | 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 " | ||
| + | Position " | ||
| + | |||
| + | Hinweis: Dadurch ergibt sich indirekt eine **n: | ||
| + | |||
| + | **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, | ||
| + | classDiagram | ||
| + | class Rechnung | ||
| + | class Position | ||
| + | class Produkt | ||
| + | |||
| + | Rechnung " | ||
| + | Position " | ||
| + | |||
| + | ---- | ||
| + | ## 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 " | ||
| + | Mitarbeiter " | ||
| + | Supportanfrage " | ||
| + | Mitarbeiter <|-- Techniker | ||
| + | </ | ||
| + | |||
| + | # b) Assoziation vs. Aggregation (am Ticketsystem erklärt) | ||
| + | |||
| + | * **Assoziation**: | ||
| + | *Beispiel*: **Mitarbeiter — erstellt — Supportanfrage**. Ein Mitarbeiter kann viele Anfragen erstellen; die Objekte existieren unabhängig voneinander. | ||
| + | * **Aggregation** (leere Raute „o--“): „Ganze-Teil“ mit *geteilter* Lebensdauer (Teil kann auch ohne Ganzes existieren). | ||
| + | *Beispiel*: **Abteilung o-- Mitarbeiter**. Eine Abteilung *umfasst* Mitarbeiter, | ||
| + | |||
| + | |||
| + | # c) 1:n oder m:n zwischen „Mitarbeiter“ und „Supportanfrage“? | ||
| + | |||
| + | * **Begründet 1:n**: In den Anforderungen steht, dass *jeder Mitarbeiter mehrere Supportanfragen stellen kann* und eine Supportanfrage von **einem** Mitarbeiter stammt (Ersteller). Damit: **Mitarbeiter 1 — n Supportanfrage**. | ||
| + | * **Wann m:n?** Nur wenn das Domänenmodell erlauben würde, dass **mehrere** Mitarbeiter gemeinsam als Ersteller derselben Anfrage gelten (z. B. Co-Ersteller oder Ticket-Übernahme als „Erstellerrolle“), | ||
| + | |||
| + | |||
allgemein/test/uebungsaufgaben.1759400861.txt.gz · Zuletzt geändert: von lars