First page Back Continue Last page Overview Graphics
Assoziationsklassen
Notes:
Eine interessantes Stilmittel ist auch die sogenannte „Assoziationsklasse“. Sie macht genau das, was ihr Name andeuten soll: eine Assoziation beschreiben, auch wenn das unter dem Licht der „Assoziation“ zwischen zwei Klassen nichtssagend klingt. Aber genau um diese Assoziationen geht es dabei.
Überlegen Sie sich einmal, wie programmtechnisch der Sachverhalt ausgedrückt werden könnte, dass eine Firma wohl Angestellte hat, und dass eine Person (hier der einfachheit halber) maximal eine Anstellung hat. Richtig: Sie assoziieren die Klasse Person mit der Klasse Firma und geben dieser Assoziation die Multiplizität * und 0..1. Schon ist das Problem gelöst.
Was aber, wenn dieses Angestelltenverhältnis beginnt gleichsam ein Eigenleben zu führen? Wenn Sie auf die Idee kommen, weitere Attribute zum Angestelltenverhältnis verwalten zu wollen, wie etwa den Beginn oder die Dauer? Dann kann es wohl keine gute Idee sein, diese Attribute in der Klasse Firma unterbringen zu wollen, denn zu einer Firma gehören ja viele Angestellte. Schon besser könnte es funktionieren, wenn diese Attribute in die Klasse Person stecken. Dieser Plan litte nur unter dem Schönheitsfehler, dass alle Personen, für die im System kein Angestelltenverhältnis verwaltet wird, diese Attribute „leer“ mit sich herumschleppen.
Viel schöner wäre es doch, eine eigene Klasse, z.B. „Beschäftigung“ einzuführen, Assoziationen und Multiplizitäten entsprechend zu setzen und diese Daten dort zu Verwalten (siehe oberes Klassendiagramm). Schade nur, dass die Assoziation zwischen Person und Firma dem ungeübten Betrachter sich jetzt entzieht!
Hier kommt die „Assoziationsklasse“ ins Spiel: Das untere Diagramm zeigt das Sprachelement (eine strichlierte line zwischen einer Klasse und einer Assoziation) als solches und modelliert im übrigen exakt dasselbe wie das obere Diagramm: Auf diese Weise ist allen Anforderungen gerecht geworden: Die Assoziation ist als solche immer noch sichtbar, die Daten der Anstellungen werden dort verwaltet, wo sie auch hin gehören: in einer eigenen Klasse.