REFERAT-MenüDeutschGeographieGeschichteChemieBiographienElektronik
 EnglischEpochenFranzösischBiologieInformatikItalienisch
 KunstLateinLiteraturMathematikMusikPhilosophie
 PhysikPolitikPsychologieRechtSonstigeSpanisch
 SportTechnikWirtschaftWirtschaftskunde  



Vererbung - informatik

Vererbung



Inhaltsverzeichnis


1. Beispiel


2. Zugriffsrechte


3. Virtuelle Methoden


4. Zugriff auf Objekte einer Klasserhierarchie mittels Zeigern




5. Abstrakte Klassen


6. Mehrfachvererbung


1. Beispiel: graphisches System für Punkte, Kreise, Linien, Kreisbögen

Klassendiagramm Vereinbarung der abgeleiteten Klassen Implementierung

zurück zum Inhaltsverzeichnis


2. Zugriffsrechte

- steuern die Zugriffs-Erlaubnis auf die Eigenschaften und Methoden einer Klasse.

 private:   nur die Methoden der eigenen Klasse können zugreifen,

 protected: die eigenen Methoden und die Methoden der abgeleiteten Klassen dürfen zugreifen,

 public:    alle (auch die Methoden fremder Klassen und 'normale' Funktionen) dürfen zugreifen.


- bei 'braver' Datenkapselung: alle Eigenschaften
private, einige (wenige) Methoden public

- Beispiel:


- Zugriffsrechte der geerbten Elemente können in der abgeleiteten Klasse eingeschränkt werden:

 class Aklasse: public Bklasse ();      Zugriffsrechte der geerbten Elemente bleiben unverändert

 class Aklasse: protected Bklasse ();   alle geerbten public-Elemente sind in Aklasse protected  class Aklasse: private Bklasse ();     alle geerbten public- und protected-Elemente sind in Aklasse private (Default!!!)


zurück zum Inhaltsverzeichnis


3. Virtuelle Methoden

'Frühe Bindung':
beim Aufruf einer Element-Funktion wird die Sprung-Adresse bereits zum Übersetzungs-Zeitpunkt festgelegt.

Beispiel:

Vorteil:
Speicherplatzsparend, schnell
Nachteil:
Klasse Circle muss MoveTo neu definieren, obwohl 'logisch' gleicher Ablauf

'Späte Bindung':
beim Aufruf der Element-Funktionen wird die tatsächliche Sprungadresse erst zur Laufzeit
 ermittelt (Compiler erzeugt einen 'indirekten' Sprung über die sogenannte V-Table des Objekts).
 Erreicht man in C++ mittels Schlüsselwort virtual.

Nachteil:
mehr Speicherplatz, langsamer
Vorteil:
Klasse Circle muss MoveTo nicht neu definieren, kann geerbte Funktion verwenden.

Beispiel:


Durch den Einsatz der späten Bindung wird 'Polymorphie' (=Vielgestaltigkeit) sichergestellt: die gleiche
Methode ist je nach Objekt-Art unterschiedlich realisiert.

Wann muss eine Methode virtuell sein?

- wenn sie in den abgeleiteten Klassen unterschiedlich implementiert ist

- und
* wenn Sie in einer anderen Methode der Basisklasse aufgerufen wird oder
* über einen Objekt-Zeiger vom Typ 'Zeiger auf Basisklasse' aufgerufen wird
    Bsp.:    Point *tab [MAXANZ] =     // speichert Zeiger auf Point-, for (int i=0; i<anz; ++i)     // Circle-, Arc- und Line-Objekte
         tab[i]->Show ();

zurück zum Inhaltsverzeichnis


4. Zugriff auf Objekte einer Klasserhierarchie mittels Zeigern
- Zeiger vom Typ 'Zeiger auf Basisklasse' sind in gewissem Umfang kompatibel zu
  Zeigern vom Typ 'Zeiger auf abgeleitete Klasse'


- z.B.:
    Point *pp, p1(100,200); Circle *cp, c1 (100,200,50); pp = &c1; pp->MoveTo(120,220); // cout << pp->getRadius();      // nicht möglich, wenn getRadius Methode // von Circle ist cout << ((Circle*)pp)->getRadius(); // cp = &p1;             // nicht erlaubt, da sonst Zugriffe auf // nicht vorhandene Komponenten möglich

zurück zum Inhaltsverzeichnis


5. Abstrakte Klassen

- dient nur als Basisklasse für andere Klassen

- es können keine Objekte angelegt werden (allerdings Zeiger und Referenzen)

- enthält mindestens eine 'abstrakte Funktion' (pure virtual function)

- abstrakte Funktion:

- virtuelle Funktion, für die in der Basisklasse keine Implementierung existiert
  (da Implementierung nicht möglich oder nicht sinnvoll ist)

- z.B.:     class APoint ;

- in den abgeleiteten Klassen müssen die abstrakten Funktionen durch 'konkrete' Funktionen ersetzt werden


zurück zum Inhaltsverzeichnis


6. Mehrfachvererbung

Objekte können auch von mehreren anderen Objekten erben



Vereinbarung der mehrfach abgeleiteten Klassen Implementierung


Das Problem bei der Mehrfachvererbung besteht darin, dass ein Objekt Eigenschaften auch mehrfach vererbt bekommen kann.

zurück zum Inhaltsverzeichnis








Haupt | Fügen Sie Referat | Kontakt | Impressum | Nutzungsbedingungen