IT – Vererbung / Polymorphismus

Spezialisierung

  • allgemeinere Klasse wird verfeinert
  • ist-ein(e) – Beziehung
  • Bsp. Student ist eine Person (Spezialisierung)
  • kann zu einer Oberklasse mehrere Unterklassen liefern  (disjunkt oder überlappend)

Generalisierung

  • spezielle Klasse wird verallgemeinert
  • invers ist-ein(e)-Beziehung
  • Bsp. Kugel, Würfel sind geometrische Körper (Generalisierung)

Vererbung

  • gemeinsame Eigenschaften (Attribute) und Methoden werden von der Oberklasse an Unterklasse weitergegeben –> vererbt
  • transitiv –> Unterklasse B erbt von Oberklasse A  und Unterklasse C erbt von B (und A, da b von A erbt)
  • im UML durch Pfeilspitzen gekennzeichnet
  • Bsp. Kombi ist ein spezieller PKW, PKW ist ein spezielles Fahrzeug
  • Unterklasse kann geerbte Attribut verdecken oder überschreiben

Polymorphismus

Aufruf einer überschriebenen Methode einer Oberklasse aus der Unterklasse

Bsp. Graphikobjekt hat zeichnen()-Methode, ebenso die Unterklassen Kreis und Rechteck – allerdings in überschriebener Form, da diese spezialisierte Versionen benötigen und die allgemeine zeichnen()-Methode nicht so nutzen können

IT – Objekte und Klassen

Objekte

  • jedes Objekt hat Zustand, Verhalten, Identität
  • viele Objekte gleicher Art möglich
  • daher Gruppierung in Klassen bei gleicher Datenstrutktur und gleichem Verhalten
  • Instanz einer Klasse
  • Kapselung von Zustand und Verhalten (Geheimhaltungsprinzip)
  •  Zugriff auf Attritbute ausschließlich über Methoden (s.o.)

Relationen

  •  Assoziationen
    • strukturelle Beziehungen zwischen den Objekten
    • spez. Aggregation
      • besteht-aus/ist-Teil-von-Relation
      • Bsp. Auto hat Reifen, Türen, Motor, etc.
      • Bez. Raute – leer und halbvoll
    • [Name],Leserichtung Pfeilspitze,
    • [Rolle] kann Kardinalität haben
      • 1 – genau 1
      • 0..2 – zwischen 0 und 2
      • * 0 oder mehr
      • 1,2,3,6 – 1 XOR 2 XOR 3 XOR 6
      • 1,2,6..* – 1 XOR 2 XOR min. 6
  • Spezialisierung / Generalisierung

 Klasse

  • neuer Referenztyp
  • eindeutiger Name / Identifier
  • ggfs. Oberklasse / Super
  • ggfs. Interfaces
  • Erzeugung einer neuen Instanz über new
  • kann mehrer Konstruktoren unterschiedlicher Signatur haben

Konstruktoren

  • public, protected , private
  • kein Rückgabetyp/-wert
  • expliziter Aufruf nur aus einem anderen K. über this oder super
  • Name identisch mit Klassenname
  • falls kein K. daklariert ist, wird Standardk. ohne Params verwendet

Zugriffskontrolle

+ public – für alle zugreifbar

– private – nur für eigene Klasse zugreifbar

# protected – nur für inheratiance  & package zugreifbar (Unterklassen, andere Klassen im gleichen Paket)

 Klassenattribute

  • in UML durch Unterstreichen gekennzeichnet
  • in Java durch static deklariert