Vererbung

class Rechteck {
    private int länge, breite;
    Rechteck(int l, int b) { länge = l; breite = b; }
    int fläche() { return länge * breite; }
}
 
class Quadrat extends Rechteck {
    Quadrat(int seite) { super(seite, seite); }
}

Konstruktorverkettung

  • Der Compiler erzwingt, dass bei der Erzeugung eines Objektes alle Konstruktoren seiner Vererbungshierarchie aufgerufen werden, und zwar von der Spitze der Hierarchie her, angefangen bei Object.
  • Ein Konstruktor kann nur entweder this() oder super() aufrufen.
  • Genau wie this() muss super() die erste Anweisung eines Konstruktors sein.

Das Schlüsselwort super

  • Mit super lassen sich auf Attribute und Methoden der Oberklasse (einschließlich Konstruktor) zugreifen, die von der Unterklasse überschrieben wurden
  • super ist quasi ein this, nur für die Oberklasse.

Das Schlüsselwort @Override

@Override wird verwendet, um dem Compiler klarzumachen, dass die darunterliegende Funktion überschrieben werden soll.

Objektdiagramme

  • Objekt(Variablen-)Name und Typ sind optional, müssen aber unterstrichen werden
  • Wird nur ein Typ angegeben, wird ein Doppelpunkt vorangestellt
  • Referenzen werden mit Pfeilen angegeben

Klassendiagramme

Klassen

  • Darunter meist Attribute
    • Statische Attribute und Methoden werden unterstrichen
    • Zugriffsmodifikatoren:
      • - private
      • ~ package-private
      • # protected
      • + public
    • Beispiel: # d: double
  • Darunter meist Methoden
    • Entweder nur mit Namen und ein Klammernpaar
      • Beispiel: umfang()
    • Oder ausführlich mit Zugriffsmodifikatoren, Parametern und Rückgabetyp
    • UML kennt den Typ void nicht, der wird dann einfach weggelassen
      • Beispiel: ~ Rechteck(länge: int, breite: int)

Zusammensetzung

  • Beispiel: Ein Auto hat ein Lenkrad
  • Klasse Auto und Klasse Lenkrad werden mit Linie verbunden, wobei beim Ganzen (hier Auto) am Linienende eine Raute ist

Komposition vs. Aggregation:

  • Komposition: Das Ganze wird aus den Teilen aufgebaut, die Teile können nicht ohne das Ganze existieren
    • Beispiel: Ein Gebäude besteht aus mehreren Räumen
  • Aggregation: Das Ganze hat zwar Teile, diese und das Gabze können aber unabhängig voneinander existieren
    • Beispiel: Eine Vorlesung hat verschiedene Studenten

Vererbung

  • Meist durch Hierachien (oft durch Baumartigen Aufbau), deren Klasse durch Pfeile verbunden sind
  • Beispiel: Cabrio ist ein Auto. daher Pfeil von Cabrio zu Auto