SE1_Team_1/dokumentation/diagramme/klassendiagramm_kundenverwa...

103 lines
2.7 KiB
Plaintext

@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 <<interface>> {
+ findeKunde(kundennummer : String) : Kunde
+ suche(suchbegriff : String) : List<Kunde>
}
class KundenVerwaltungsService {
+ legeAn(kunde : Kunde) : Kunde
+ aendere(kunde : Kunde) : Kunde
+ loescheKunde(kundennummer : String)
+ alleSortiertNachName() : List<Kunde>
+ suche(suchbegriff : String) : List<Kunde>
+ findeKunde(kundennummer : String) : Kunde
}
interface KundennummernGenerator <<interface>> {
+ naechsteNummer() : String
}
class EinfacherKundennummernGenerator {
+ naechsteNummer() : String
}
interface KundenRepository <<interface>> {
+ speichere(kunde : Kunde) : Kunde
+ loesche(kundennummer : String)
+ findeNachNummer(kundennummer : String) : Kunde
+ alleSortiertNachName() : List<Kunde>
+ suche(suchbegriff : String) : List<Kunde>
}
class JsonKundenRepository {
}
class KundenCsvExport {
+ exportiere(kunden : List<Kunde>, zielDatei : Path)
}
class EreignisBus {
+ abonniere(bereich : DatenBereich, beobachter : Runnable)
+ melde(bereich : DatenBereich)
}
enum DatenBereich {
KUNDEN
PRODUKTE
DOKUMENTE
}
' ===================== Externe Komponente (lose Kopplung) =====================
interface KundenReferenzPruefung <<extern (Gruppe A)>> {
+ 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