Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Softwaretechnik (http://www.informatikerboard.de/board/board.php?boardid=18)
----- Dekorierer Klassendiagramm (http://www.informatikerboard.de/board/thread.php?threadid=4171)


Geschrieben von Marcel20X am 21.05.2019 um 12:50:

  Dekorierer Klassendiagramm

Hallo ich versuche grad ein Dekorierer zu modellieren mit folgenden Eigenschaften.

• Ein Mitarbeiter ist eine Person mit einem Namen und einem Grundgehalt.
• Ein Mitarbeiter kann Zusatzaufgaben übernehmen. Zusatzaufgaben sind:
• Projektleitung: Für jede Projektleitung wird eine Zulage gezahlt.
• Kundenbetreuung: Ein Kunde hat eine Nummer und einen Umsatzwert.
Für jede Kundenbetreuung wird ein Bonus von 10% des Umsatzwertes gezahlt.
• Veranstaltungsorganisation: Für das Organisieren gibt es keine besondere Vergütung.

Ich habe jetzt grob ein erstellt und wollte mal fragen ob die Beziehungen und der Aufbau stimmt. Die Methoden hab ich extra noch nicht mit eingefügt.



Geschrieben von Marcel20X am 21.05.2019 um 16:31:

  RE: Dekorierer UML-Klassendiagramm

Ich habe ihn nun so aufgebaut.
ES soll ein UML-Klassendiagramm für ein Dekorierer werden.



Geschrieben von as_string am 21.05.2019 um 19:19:

 

Der Dekorierer (ich denke, das ist das, was Du mit "Zusatz" bezeichnest?) muss selbst von der abstrakten Klasse "Person" erben.
Das besondere bei dem Muster ist nämlich, dass die erzeugten Dekorierer-Objekte als vollwerte Objekte der ursprünglichen Klasse weiter verwendet werden können, also dasselbe Interface implementieren. Dabei delegieren sie alles weiter an das Objekt, das sie dekorieren und auf das sie eine Referenz halten, außer Dinge, die sie verändern wollen.

Bei der Projektleitung wird man wahrscheinlich auch eine Liste von Projekten benötigen?
Die Boni richten sich ja dann entsprechend nach Grundgehalt und der Anzahl Projekte und/oder Kunden, denke ich.

Gruß
Marco



Geschrieben von Marcel20X am 21.05.2019 um 20:38:

 

Ja der Meinung war ich auch.

Für das oben modellierte Dekorierer-Muster soll ich die Methode int gehalt() anlegen. Die Methode gehalt soll für den mit Hilfe der Objekte des Dekorierer Musters beschriebenen Mitarbeiter das insgesamt zu zahlende Gehalt ermitteln. Wie würde den für sowas die Java Implementierung Aussehen.



Geschrieben von as_string am 22.05.2019 um 11:06:

 

Aber "Person" zu implementieren hilft nicht viel, weil die ja noch gar keine gehalt() Methode hat.
Du musst das so machen:
Ein Interface Mitarbeiter mit der Methode int gehalt().
Eine KonkreteMitarbeiter-Klasse, die ein Grundgehalt in einem Feld speichert, das Mitarbeiter Interface so implementiert, dass die gehalt()-Methode dieses Grundgehalt zurück gibt.
Eine abstrakte Klasse MitarbeiterDekorier, die eine Referenz auf ein Mitarbeiter-Objekt hält und selbst das Mitarbeiter Interface implementiert, indem es die int gehalt()-Methode an das referenzierte Mitarbeiter-Objekt delegiert, das es sich im Konstruktor merkt.
Ob man diese abstrakte Klasse überhaupt braucht ist noch eine andere Frage. Vielleicht in Java nicht so wichtig...
Ähnlich sehen dann die ProjektleitungDekorierer, KundenbetreuungDekorierer und VeranstaltungsorganisationDekorierer aus:
Der Konstruktor nimmt ein Mitarbeiter entgegen und merkt sich die Referenz in einer Member-Variablen. Die int gehalt() Methode ruft selbst die gehalt()-Methode des referenzierten Mitarbeiters auf und addiert dann selbst noch die eigenen Boni dazu, je nach Art des Dekorierers und wieviele Projekte/Kunden/Veranstaltungen jeweils betreut werden.

Verstehst Du, wenn man dieses Konstrukt dann verwendet überhaupt? Vielleicht sollte man damit anfangen.

Gruß
Marco



Geschrieben von Tomass am 27.12.2022 um 11:39:

  RE: Dekorierer Klassendiagramm

Ein Mitarbeiter ist eine Person mit einem Namen und einem Grundgehalt. Ein Mitarbeiter kann Zusatzaufgaben übernehmen. Zusatzaufgaben sind: Projektleitung: Für jede Projektleitung wird eine Zulage gezahlt. Kundenservice: Für jede Stunde Kundenservice wird eine Zulage gezahlt.
Das Modell ist sowohl für die Erstellung von Inhalten als auch für die Verwaltung dieser Inhalte geeignet. Beide Seiten bieten kostenlose und Premium-Optionen an, sodass du dich für diejenige entscheiden kannst, die am besten zu dir passt.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH