magicmarcy.de | Assoziationen in Java - Entschuldigung, kennen wir uns?

Assoziationen in Java - Entschuldigung, kennen wir uns?

4. März 2025 - Lesezeit: 2 Minuten

Ich hatte neulich erst einen Beitrag zur objektorientierten Programmieung in Java geschrieben und möchte ergänzend dazu heute über Assoziationen sprechen. Denn auch diese sind ein wichtiger Teil wenn uns um Verbindungen, bzw. Beziehungen zwischen Klassen geht.

In der Therorie ist das ziemlich einfach wenn man sich zum Beispiel mal die Beziehung einer Bestellung zu einem Kunden vor Augen hält. Wenn der Kunde keine Beziehung zu seinen Bestellungen hätte, könnte er weder bestellen noch könnten die von ihm bestellten Waren zugestellt werden.

Diese Beziehungen untereinander nennt man Assoziationen und es gibt sie in verschiedenen Formen:

Einfache Asoziation: Eine Klasse kennt die andere, aber nicht umgekehrt

Bidirektionale Assoziation: Beide Klassen kennen sich gegenseitig

Aggregation: Eine "hat-eine"-Beziehung, bei der die anhängige Klasse auch ihne die Hauptklasse existieren kann

Komposition: Eine "besteht-aus"-Beziehung, bei der das abhängige Objekt nicht ohne das Hauptobjekt existieren kann

Zurück zu unseren Bestellungen und Kunden und lass uns dafür ein bisschen Code anschauen:

 

Die Klasse Bestellung

public class Bestellung {
    private int bestellnummer;
    private String produkt;

    public Bestellung(int bestellnummer, String produkt) {
        this.bestellnummer = bestellnummer;
        this.produkt = produkt;
    }

    public int getBestellnummer() {
        return bestellnummer;
    }

    public String getProdukt() {
        return produkt;
    }

    @Override
    public String toString() {
        return "Bestellung {Bestellnummer: " + bestellnummer + ", Produkt: " + produkt + "}";
    }
}

Hier sehen wir eine normale Klasse ohne weitere Besonderheiten. Wir haben zwei Attribute die eine Bestellnummer und einen Produktnamen repräsentieren.

 

Die Klasse Kunde mit einer Assoziation zu Bestellung

public class Kunde {
    private String name;
    private List<Bestellung> bestellungen;

    public Kunde(String name) {
        this.name = name;
        this.bestellungen = new ArrayList<>();
    }

    public void addBestellung(Bestellung bestellung) {
        bestellungen.add(bestellung);
    }

    public List<Bestellung> getBestellungen() {
        return bestellungen;
    }

    @Override
    public String toString() {
        return "Kunde {Name: " + name + ", Bestellungen: " + bestellungen + "}";
    }
}

Die Klasse Kunde hingegen hat nun eine Assoziation mit der Klasse Bestellung. Der Kunde "hat-eine" Liste von Bestellungen als Attribut um diese Assoziation zu definieren. Das bedeutet also, dass die Klasse Kunde auch die Klasse Bestellung kennt, die Klasse Bestellung aber nicht den Kunden. Somit sind wir in der Lage, einem Kunden seine Bestellungen zuzuordnen.

 

Verwendung

Um nun die Bestellungen einem Kunden zuzuordnen können wir folgendes tun:

public class Main {
    public static void main(String[] args) {
        Kunde kunde = new Kunde("Max Mustermann");
        
        Bestellung bestellung1 = new Bestellung(1001, "Laptop");
        Bestellung bestellung2 = new Bestellung(1002, "Smartphone");
        
        kunde.addBestellung(bestellung1);
        kunde.addBestellung(bestellung2);
        
        System.out.println(kunde);
    }
}

Im ersten Schritt erzeugen wir einen neuen Kunden und können ihm im nächsten Schritt seine Bestellungen zuweisen.

 

Dieses Beispiel zeigt eine einfache eins-zu-viele Assoziation (one to many). In der Praxis könnten solche Beziehungen noch erweitert werden, z. B. mit einer bidirektionalen Referenz (dass die Bestellung weiß, zu welchem Kunden sie gehört) und/oder mit einer Datenbankanbindung.

Ich hoffe, dass dieser kleine Einblick dir weitergeholfen hat und du nun mit Assoziationen in Java etwas mehr vertraut bist. Wenn du bereits objektorientierte Programmierung einsetzt, wirst du Assoziationen vermutlich schon viele Male verwendet haben, ohne es genau zu wissen.

Es wurden noch keine Kommentare verfasst, sei der erste!

Support

Wenn du mich und meine Arbeit unterstützen möchtest, freue ich mich sehr über eine kleine Aufmerksamkeit in Form eines Kaffees ;-)



Weitere Informationen, wie du mich und meine Arbeit unterstützen kannst, findest du hier.