Dekorierer Klassendiagramm

Neue Frage »

Auf diesen Beitrag antworten »
Marcel20X 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.
 
Auf diesen Beitrag antworten »
Marcel20X RE: Dekorierer UML-Klassendiagramm

Ich habe ihn nun so aufgebaut.
ES soll ein UML-Klassendiagramm für ein Dekorierer werden.
Auf diesen Beitrag antworten »
as_string

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
Auf diesen Beitrag antworten »
Marcel20X

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.
 
Auf diesen Beitrag antworten »
as_string

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
Auf diesen Beitrag antworten »
Tomass 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.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »