Wozu benötigt man eine gerichtete Assoziation in Java?

1 Antwort

Schlichtweg zum Informationsaustausch von Klassen untereinander. Enthält eine Klasse ein Objekt einer anderen Klasse, besteht schon eine (mindestens einseitig) gerichtete Assoziation, eine Verbindung zwischen zwei Klassen.

Das kann sinnvoll sein, wenn beispielsweise ein Objekt der Klasse Wohnhaus mehrere Objekte der Klasse Bewohner enthält. Dann ist es natürlich sinnvoll, dass in der Klasse Wohnhaus bekannt ist, welche Bewohner-Objekte denn enthalten sind.

public class Wohnhaus {
   private ArrayList<Bewohner> bewohner;
   ...
}

Das ermöglicht eine einfache Verwaltung der Objekte in der Klasse Wohnhaus und ist eine unidirektionale Assoziation, also eine einseitige Verbindung der Klassen Wohnhaus und Bewohner (das Wohnhaus kennt seine Bewohner, die Bewohner aber nicht ihr Wohnhaus).

Möglicherweise wäre es aber auch sinnig, dass Objekte der Klasse Bewohner gleich wissen, welchem Wohnhaus sie zugehören. Dazu legt man wie in der anderen Klasse einfach eine Instanzvariable vom Typ Wohnhaus an.

public class Bewohner {
   private Wohnhaus wohnhaus;
   ...
}

So kennt jetzt jeder Bewohner sein Wohnhaus und jedes Wohnhaus seine Bewohner. Obiges bezeichnet man dann als bidirektionale Assoziation, also als zweiseitige Verbindung der beiden Klassen.

Im UML kann man Assoziationen durch die verschiedenen Darstellungen der Pfeile recht gut erkennen. Letzten Endes bilden gerichtete Assoziationen also die Grundlage der internen Kommunikation von Klassen. Ohne Assoziationen funktioniert objektorientierte Programmierung nicht.

LG

Woher ich das weiß:Berufserfahrung – Software-Entwicklung
Brieftasche1982 
Fragesteller
 16.01.2018, 19:19

Danke für deine Mühe. Mir fehlt aber noch ein Schritt.

Was bedeutet "kennen". Hat das was mit den Methoden zu tun?

0
Willibergi  16.01.2018, 22:40
@Brieftasche1982

“Kennen“ bedeutet in dem Fall, dass die Klasse die entsprechende Variable verwaltet (als Instanzvariable). Damit kennt jede Klasse die jeweilige Information.

0