Lernkarten

Karten 94 Karten
Lernende 3 Lernende
Sprache Deutsch
Stufe Universität
Erstellt / Aktualisiert 28.02.2013 / 15.08.2015
Lizenzierung Kein Urheberrechtsschutz (CC0)
Weblink
Einbinden
0 Exakte Antworten 94 Text Antworten 0 Multiple Choice Antworten
Fenster schliessen

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.

Fenster schliessen

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

Fenster schliessen

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 { }

Fenster schliessen

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]
Fenster schliessen

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 { }
Fenster schliessen

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.
Fenster schliessen

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

Fenster schliessen

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