# Kann mir vielleicht jemand die reflexive Assoziation erklären?



## DennisXX (10. Jan 2011)

Siehe Bild im Anhang, leider verstehe ich diese nicht. Kann mir vielleicht jemand erläutern, was so genu mit dieser Assoziation an diesem Objekt auf sich hat und wie das mit den Rollennamen zusammenspielt?


----------



## tagedieb (10. Jan 2011)

Ich interpretiere das so:

Jeder Fahrer faehrt 0-4 Beifahrer herum.
Jeder Beifahrer wird von 1 Fahrer herumgefahren.

Ergo. Ohne Fahrer gibt es auch keine Beifahrer. (Wenn der Fahrer aussteigt muessen auch die Beifahrer aussteigen  )


----------



## Soahc (11. Jan 2011)

Reflexive Assoziationen beschreiben immer eine Beziehung von Klassen mit sich selber.. oder anders, Objekte ein und des selben Types(aber auch abgeleitete davon) stehen mit einander in Beziehung. In deinem Beispiel sind sowohl Fahrer als auch Beifahrer Objekte von Typ Fahrzeuginsasse... um sie trotzdem mit einander in Verbindung zu setzen, wird im Klassendiagram das Hilfsmittel "Reflexive Assoziationen" angewendet. Auf diese Weise werden meist hierarchische Zusammenhänge dargestellt. Ein anderes Beispiel wäre z.B. die Ordner-Hierarchie auf deiner Festplatte... das sind zwar alles Ordner, aber manche Ordner haben einen Überordner und der könnte Wiederum ein Unterordner eines anderen sein.

bei deinem konkreten Beispiel könnte der Java-Code so aussehen:


```
package drive;

import java.util.ArrayList;

public class Fahrzeuginsasse {
	
	ArrayList<Fahrzeuginsasse> beifahrerListe = new ArrayList<Fahrzeuginsasse>();
	
	public void addBeifahrer(Fahrzeuginsasse insasse){
		//bei insase null ist abrechen
		if (insasse == null) return;
		//wenn insasse man selbst ist abrechen
		if (insasse==this) return;
		//wenn insasse schon beifahrer ist abrechen
		if (beifahrerListe.contains(insasse)) return;
		//wenn schon 4 beifahrer existieren, abrechen
		if (beifahrerListe.size()>=4) return;
		
		beifahrerListe.add(insasse);
	}
}
```

gruß, Phill


----------

