Foliensatz 7: Vererbung Flashcards
Woraus setzt sich eine Unterklasse zusammen (3 Dimensionen eines ABAP-Objects)?
- allen Elementen der darüber liegenden Oberklassen bis zur Wurzel (Redundanzvermeidung)
- ihre eigenen Elementen mit neuen Aufgaben(Neuimplementation)
- geerbte Methoden, die verändert werden (Spezialisierung durch Redefiniton)
-Oberklasse kann mehrere Unterklassen haben, aber eine Unterklasse kann nur eine Oberklasse haben, also keine Mehrfachvererbung erlaubt
Was sind die Ziele des Vererbungskonzepts?
Das Konzept der objektorientierten Vererbung soll eingesetzt werden
• zur Veränderung der Funktionalität
• ohne Beeinträchtigung der Quellklasse oder
• ohne Hinzufügen redundanten Codes
Wie wird im ABAP Objects im Rahmen der Vererbung die Redundanzvermeidung erreicht?
- die speziellere, erbende Klasse besitzt implizit alle Methoden der Oberklasse, müssen also nicht explizit deklariert werden
- speziellere Klasse enthält desweiteren Methoden, die Oberklasse nicht hat
Worin unterscheiden sich im ABAP-Objects Spezialisierung und Neuimplementation?
Eine Spezialisierung erbt alle Methoden der Oberklasse und kann dann durch weitere eigene Methoden diese Klasse noch spezialisieren, während eine Neuimplementation nichts erbt und alles neu implementiert.
In welcher Beziehung sollte eine Superklasse zur Subklasse stehen, um eine Vererbung zu rechtfertigen?
Die Superklasse sollte eine allgemeine Implementation des Grundverhalten und der Grundeigenschaften sein, die alle Subklassen teilen. Die Subklasse sollte eine Spezialisierte Sonderform sein, die sie von an-deren Subklassen, sowie dem Supertyp unterscheidet. Z.B. Supertyp Konto mit Inhaber und Kontostand und Festgeldkonto mit Zinsen und Laufzeit.
Eine Klasse C1 vererbt auf C21 und C22. Können in ABAP‐Objects C21 und C22 auf eine weitere Klasse C3 vererben
Nein, C21 und C22 können nicht beide auf C3 vererben, weil ABAP-Obejcts keine Mehrfachvererbungen kennt. Eine Unterklasse kann immer nur jeweils eine Oberklasse haben. Dies dient dazu, damit es keine Namenskonflikte gibt, wie z.B. wenn beide Oberklassen eine Methode mit selben Namen hätten. Gleichzeitig führt dies zu Performancenachteilen.
Private Methoden oder Attribute werden dabei nicht vererbt.
Wie legt man eine Unterklasse in ABAP-Objects an?
CLASS subclass DEFINITION INHERITING FROM superclass.
……
ENDCLASS.
Was ist eine abstrakte Klasse?
Eine abstrakte Klasse dient nur als Avorlage, aus der keine Objekte erzeugt werden können.
-CLASS myclassDEFINITION ABSTRACT.
Dies dient dazu, wenn die Funktionalität im Zeitpunkt der Klassierung durch die Klasse nicht vollständig implementiert werden kann/soll.
Welchen Sinn besitzt eine abstrakte Klasse?
-Bereitstellung einer gemeinsamen Schnittstelle und einer teilweisen implementierten Funktionalität. abstrakte Klassen können selbst aber noch keine sinnvollen Operationen auf ihren Attributen ausführen
Beispiel:
Gehaltsabrechnungssystem:
-Klasse kann Überweisung Schnittstellen vorgeben, während eigentliche Gehaltsabrechnung noch abstrakt bleibt
-wird dann erst in Subklassen implementiert, in den die verschiedenen Anstellungsverhältnisse der Mitarbeiter definiert und implementiert werden
Was ist eine finale Klasse?
Sollen Klassen vor unkontrollierter Spezialisierung geschützt werden, können sie als final deklariert werden:
CLASS classDEFINITION FINAL.
- finale Klasse besitzt keine Unterklassen
- finale Methode kann nicht redefiniert werden
- finale Methoden können nicht abstrakt definiert werden
Welchen Sinn besitzt eine finale Klasse?
Schützt vor Namenskollisionen bei “Erbfreigabe”. Das Überschreiben wird verboten, damit die Methoden nicht redefiniert werden
Wie wird in ABAP-Objects eine Methode redefiniert?
- bei Redefiniton bleibt Schnittstelle erhalten, nur Implementation der Methode ändert sich
- statische Methoden können nicht redefiniert werden
METHODS methREDEFINITION.
Was ist der Unterschied einer Neuimplementation zur Redefinition?
- neuimplementierte Methode gab es zuvor in Oberklasse noch nicht
- eindeutiger Name im Namensraum muss verwendet werden
- vollständige Deklaration mit Schnittstelle muss vorgenommen werden
Was sind Konstruktoren?
- jede Klasse besitzt einen vordefinierten Instanzkonstruktur namens “constructor”
- Instanzkonstruktoren können nicht redefiniert und nicht mit “constructor()” aufgerufen werden
- werden bei Klasseninitiierung einmal ausgeführt
Was sind die Vorteile von Vererbung?
- Wiederverwendbarkeit
- Vermeidung von Code Redundanz
- Fehlerkorrekturen in Oberklasse wirken sich unmittelbar auch auf Unterklassen aus
- konzeptionelle Grundlage der Polymorphie