FujabaTM Associations Specification
Unterscheidungen der Assoziationen
Assoziationen werden durch die folgenden fünf Attribute
näher beschrieben.
- Anzahl der beteiligten Klassen
- Name der Assoziation
- Namen der jeweiligen Rollen
- Kardinalität der jeweiligen Rollen
- Qualifizierte Rollen
Im folgenden werden nur Assoziationen mit zwei beteiligten Klassen
betrachtet. Bei einer näheren Untersuchen der jeweiligen
Attribute fällt auf, daß die beiden letzten Eigenschaften eine
besondere Auswirkung auf das jeweilig zu implementierende Interface und
deren Umsetzung im Quelltext haben.
In der folgenden Tabelle werden die sechs möglichen Assoziationen aufgeschlüsselt.
Implementierungsanweisungen
- Im Kommentar vor einer Klasse sollten alle Assoziationen
der Klasse dokumentiert sein!
- Vor jedem Attribut, das zu einer Assoziation gehört, muß die
Assoziation dokumentiert werden.
- Die Zugriffsmethoden für die jeweiligen Assoziationen müssen
wie in diesem Dokument beschrieben implementiert werden. Sollten
einige Randbedingungen eine andere Implementierung oder
zusätzliche Methoden erforden, so sind diese ausführlich
in dem Kommentar zur Assoziation und in bzw. über der jeweiligen
Methode zu dokumentieren.
- Methoden, die in den Zugriffsmethoden benutzt werden, werden
hinter der letzten Zugriffsmethode im Quelltext positioniert.
- Vor und nach jedem Block, der die Zugriffsmethoden
incl. Kommentaren und anderen benötigten Methoden beinhaltet,
werden Einzeilenkommentare eingefügt, so daß die Blöcke
besser zu erkennen sind.
Zur Auswahl stehen folgende Container:
- FHashSet
- FHashMap
- FDuplicatedHashMap
- FLinkedList
- FTreeSet
- FTreeMap
- FDuplicatedTreeMap
Von Außen unterscheiden sich die Hashtabellen und Bäume nur wenig.
Der wesentliche Unterschied liegt in der Reihenfolge, in der die Elemente
durch einen Iterator ausgegeben werden. Bei Hashtabellen werden die Elemente
in Einfügefolge und bei Bäumen in Sortierfolge ausgegeben.
Bei der Verwendung von Bäumen müssen die Elemente das Interface
Comparable implementieren. Ein Standard-Comparator wird zur Verfügung
gestellt, es kann aber auch ein spezieller Comparator angegeben werden.
Zu beachten ist eine korrekte Implementierung der Funktion hashCode () bei
Verwendung der Hashtabellen!
Darstellung einer Assoziation im Kommentar der Klasse
/**
* <h2>Associations</h2>
*
* <pre>
* 1 1
* LeftClass --------------------------- RightClass
* leftRole rightRole
* </pre>
*/
public LeftClass
{