@startuml klassendiagramm_kundenverwaltung_gruppeC ' UML-Klassendiagramm Kundenverwaltung (Pflichtenheft Gruppe C, Abschnitt 7.1) ' Layout-Engine Smetana -> kein Graphviz erforderlich. !pragma layout smetana skinparam shadowing false skinparam classAttributeIconSize 0 skinparam linetype ortho hide empty members title UML-Klassendiagramm — Kundenverwaltung (Gruppe C) ' ===================== Domänenmodell ===================== class Kunde { - kundennummer : String - name : String - strasse : String - plz : String - ort : String - eMail : String - telefon : String - ustIdNr : String + anschrift() : String } ' ===================== Service-Schicht ===================== interface KundenService <> { + findeKunde(kundennummer : String) : Kunde + suche(suchbegriff : String) : List } class KundenVerwaltungsService { + legeAn(kunde : Kunde) : Kunde + aendere(kunde : Kunde) : Kunde + loescheKunde(kundennummer : String) + alleSortiertNachName() : List + suche(suchbegriff : String) : List + findeKunde(kundennummer : String) : Kunde } interface KundennummernGenerator <> { + naechsteNummer() : String } class EinfacherKundennummernGenerator { + naechsteNummer() : String } interface KundenRepository <> { + speichere(kunde : Kunde) : Kunde + loesche(kundennummer : String) + findeNachNummer(kundennummer : String) : Kunde + alleSortiertNachName() : List + suche(suchbegriff : String) : List } class JsonKundenRepository { } class KundenCsvExport { + exportiere(kunden : List, zielDatei : Path) } class EreignisBus { + abonniere(bereich : DatenBereich, beobachter : Runnable) + melde(bereich : DatenBereich) } enum DatenBereich { KUNDEN PRODUKTE DOKUMENTE } ' ===================== Externe Komponente (lose Kopplung) ===================== interface KundenReferenzPruefung <> { + anzahlVerknuepfterDokumente(kundennummer : String) : int } ' ===================== Realisierungen (konkrete Implementierungen) ===================== KundenService <|.. KundenVerwaltungsService KundenRepository <|.. JsonKundenRepository KundennummernGenerator <|.. EinfacherKundennummernGenerator ' ===================== Nutzungs-/Abhängigkeitsbeziehungen ===================== KundenVerwaltungsService ..> KundenRepository KundenVerwaltungsService ..> KundennummernGenerator KundenVerwaltungsService ..> KundenReferenzPruefung KundenVerwaltungsService ..> EreignisBus EreignisBus ..> DatenBereich ' Zugriff auf Kunde = Abhängigkeit (liefert/speichert), KEIN 1:n-Container KundenVerwaltungsService ..> Kunde : verwaltet KundenRepository ..> Kunde : liefert / speichert KundenCsvExport ..> Kunde : exportiert @enduml