MINT lernen

Objekte, die Objekte kennen

Ein Fahrer weiß, welches Auto er fährt — aber woher? Objekte können sich gegenseitig kennen, und das verändert alles.

1

Beziehungen im Diagramm

  • Assoziation:ein Objekt der einen Klasse kennt ein Objekt der anderen Klasse.
  • Klassendiagramm:einfache Linie zwischen den Klassen, beschriftet mit der Beziehung.
  • Kardinalität:wie viele Objekte gekannt werden: 1, 0..1 oder n.
  • Umsetzung:ein Attribut vom Typ der anderen Klasse: - auto: Auto.
  • Richtung:„Fahrer kennt Auto“ — nur der Fahrer hat das Attribut, das Auto weiß nichts vom Fahrer.
Fahrer
  • - name: Zeichenkette
  • - auto: Auto
  • c Fahrer(name: Zeichenkette)
  • + setAuto(a: Auto)
  • + getAuto(): Auto
kennt0..1
Auto
  • - kennzeichen: Zeichenkette
  • - farbe: Zeichenkette
  • c Auto(k: Zeichenkette, f: Zeichenkette)
  • + getKennzeichen(): Zeichenkette

Ein Fahrer kennt höchstens ein Auto.

2

Beziehungen herstellen und nutzen

  • Herstellen:im Konstruktor oder per Setter: f1.setAuto(a1);
  • Nutzen:Methode über die Referenz aufrufen: auto.getKennzeichen() — das Objekt gibt die Arbeit weiter.
  • Kette:von außen: f1.getAuto().getKennzeichen() — von links nach rechts gelesen.
  • null prüfen:solange kein Auto gesetzt ist, steht in auto der Wert null.
public class Fahrer {
    private String name;
    private Auto auto;                    // anfangs null

    public Fahrer(String name) {
        this.name = name;
    }
    public void setAuto(Auto a) {
        this.auto = a;
    }
    public String ansage() {
        if (auto == null) {
            return name + " hat kein Auto";
        }
        return name + " fährt " + auto.getKennzeichen();
    }
}

Ziehe die Pfeilspitzen der Fahrer auf ein Auto oder auf null — mit der Tastatur: Pfeilspitze fokussieren, ↑/↓ wählt das Ziel. Das Readout wertet die Ausdrücke rechts sofort aus.

Wer fährt welches Auto?

Halte fest: Die Beziehung ist nur eine Referenz im Attribut auto. Über sie ruft der Fahrer Methoden seines Autos auf — zeigt sie auf null, scheitert der Aufruf.

Merke

Assoziation: Die Klasse bekommt ein Attribut vom Typ der anderen Klasse. Über diese Referenz ruft das Objekt Methoden des anderen auf — vorher auf null prüfen.

3

Allgemeine Hinweise

NullPointerException

Ruft man getKennzeichen() über eine Referenz auf, die null ist, bricht das Programm ab. Erst prüfen, dann aufrufen.

Kennen ist nicht Besitzen

Zwei Fahrer können dasselbe Auto kennen. Es gibt dann nur ein Auto-Objekt — eine Änderung sehen beide.

Satz bilden

„Fahrer kennt Auto“ laut lesen: Das Subjekt des Satzes bekommt das Attribut.

Videos