Premium Partner

Objektorientierte Programmierung OOP

KE4 Vererbung; Begriffe, Beispiele und Definitionen

KE4 Vererbung; Begriffe, Beispiele und Definitionen


Set of flashcards Details

Flashcards 94
Language Deutsch
Category Computer Science
Level University
Created / Updated 28.02.2013 / 18.05.2022
Licencing No Copyright (CC0)
Weblink
https://card2brain.ch/box/objektorientierte_programmierung_oop6
Embed
<iframe src="https://card2brain.ch/box/objektorientierte_programmierung_oop6/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Begriff: Welche Bedeutung hat der Begriff Taxonomie?

Taxonomien kennen wir aus der Biologie: Eine Taxonomie Taxonomie ist dort eine biologische Systematik, die dazu dient, Lebewesen gemäß ihrer angenommenen und nachgewiesenen Verwandschaftsbeziehung zu klassifizieren. Dabei werden bestimmte Merkmale herangezogen.

Begriff: Beschreiben Sie den Begriff der Vererbung.

Bei der Klassenvererbung (engl. class inheritance) erbt eine UnterklasseU die Attribute und Methoden einschließlich ihrer Implementierung von der OberklasseO, von der U abgeleitet wurde. Mittels Vererbung erhalten wir die Möglichkeit, auszudrücken, dass eine Klasse (hier U) ähnlich einer anderen Klasse (hier O) ist, mit gewissen Unterschieden, die sie spezieller machen. Um diese Unterschiede auszudrücken, können der abgeleiteten Klasse neue Attribute und Methoden hinzugefügt werden, oder die Implementierungen der geerbten Methoden verändert werden. Durch die Vererbung wird zwischen Unter- und Oberklasse eine ist-ein-Beziehung erzeugt

Beispiel: Vererbung einer Klasse in Java.

Wollen wir nun in Java ausdrücken, dass die Klasse Pflanze eine Unterklasse der extends Klasse Artikel ist, so geschieht dies mit Hilfe des Schlüsselworts extends und dem Namen der Oberklasse. [JLS: § 8.1.4]

class Artikel {

   double preis;

   double lieferePreis() {

   return this.preis;

   }

   void legePreisFest(final double neuerPreis) {

      this.preis = neuerPreis;

    }

}

class Pflanze extends Artikel { }

Verständnis: Erläutern Sie die Beziehung der Unter- und Oberklassen. Subtyp und Typenverträglichkeit.

Jede Klasse definiert einen eigenen Objekttyp. Durch die Vererbung entstehen zwischen den Objekttypen Beziehungen. Ein durch eine Klasse U festgelegter Typ ist genau dann ein Subtyp einer durch die Klasse O festgelegten Typs, wenn U eine Unterklasse von O ist. Wir sagen auch, der Objekttyp U ist verträglich mit dem Objekttyp O. Der Typ des null-Verweises ist mit allen Objekttypen verträglich. [JLS: § 4.10.2]

Aufgabe: Wie kann verhindert werden, dass Syubtypen von Klassen gebildet werden.

Durch die folgenden Anweisungen, wird beispielhaft gezeigt, wie eine Klasse geschütz werden kann.

 

class Zubehoer extends Artikel { } final class DiverseDekoration extends Zubehoer { }

Begriff: Substitutionsprinzip

Vererbung bedeutet, dass jedes Objekt der Unterklasse auch eines der Oberklasse ist. Jede Pflanze ist somit auch ein Artikel. Ein Objekt der Unterklasse kann somit überall verwendet werden, wo ein Objekt der Oberklasse erwartet wird. Diesen Umstand nennen wir Substitutionsprinzip. Objekte der Unterklasse substituieren Substitutionsprinzip Objekte der Oberklasse. Dies ist immer möglich, da die Unterklasse alle Attribute und Methoden der Oberklasse erbt.

Bemerkung: Wir können Verweisvariablen vom Typ der Oberklasse ein Objekt der Unterklasse zuweisen.

Artikel a = new Pflanze();

Dabei muss beachtet werden, dass an a dennoch nur auf Attribute und Methoden der Klasse Artikel zugegriffen werden kann.

a.legePreisFest(15.0);

// ist möglich

a.legeLagertemperaturFest(10.0);

// ist nicht möglich, da die

// Klasse Artikel diese

// Methode nicht besitzt

Aufgabe: Wofür wird die Methode instanceof verwendet?

Manchmal ist es nötig zu prüfen, ob eine Variable auf ein Objekt einer Unterklasse verweist. Dies kann mit Hilfe des Operators instanceof geschehen. Der Ausdruck x instanceof Y liefert genau dann true, wenn x nicht der nullVerweis ist und wenn die Klasse des Objekts, auf das x verweist ein Subtyp von Y ist. [JLS: § 15.20.2]

Artikel a = new Artikel();

Artikel p = new Pflanze();

boolean aIstPflanze = a instanceof Pflanze; // liefert

false

boolean pIstPflanze = p instanceof Plfanze; // liefert true