ABAP Objects

Objektorientiertes ABAP für moderne Clean Core SAP Systeme

Vererbung (Inheritance)

(C) Brandeis Consulting📁

Inheritence / Vererbung

Vererbung

Definition Wikipedia

Die Vererbung dient dazu, aufbauend auf existierenden Klassen neue zu schaffen, wobei die Beziehung zwischen ursprünglicher und neuer Klasse dauerhaft ist. Eine neue Klasse kann dabei eine Erweiterung oder eine Einschränkung der ursprünglichen Klasse sein.

Beispiel

Ein Würfel würfelt. Eine Würfel-Super-Klasse könnte das zufällige Würfeln einer der verfügbaren Seiten implementieren. Ein typischer Würfel mit 6 Seiten und Zahlen von 1-6 könnte von dieser Super-Klasse erben und durch minmale Anpassungen die Seitenzahl auf 6 beschränken und die Bezeichnung ändern.

(C) Brandeis Consulting📁

Vererbung: Definition

CLASS zcl_bc_aoo_##_die_inh DEFINITION
  PUBLIC
  "FINAL
  CREATE PUBLIC
  INHERITING FROM zcl_bc_aoo_number_die.

  PUBLIC SECTION.
    METHODS get_description REDEFINITION.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.
  • Die Vererbung von einer Super-Klasse wird im Anbschnitt DEFINITION der vererbten Klasse durch INHERITING FROM <super-class> deklariert
  • Die Redefinition von Methoden wird durch METHODS <method> REDEFINITION deklariert
  • Die Sichtbarkeit kann nicht verändert werden: es muss die SECTION der Super-Klasse verwendet werden
  • Die Signatur von redefinierten Methoden kann nicht verändert werden
  • Über FINAL kann eine weitere Vererbung unterbunden werden
  • Achtung: FINAL wird automatisch gesetzt und muss aktiv entfernt oder auskommentiert werden.
(C) Brandeis Consulting📁

Vererbung: Implementierung

  METHOD get_description.
    IF is_description_available( ) EQ abap_true.
      RETURN super->get_description(  ).
    ELSE.
      RETURN |Würfel mit { get_face_count(  ) } Seiten (ID: { get_id(  ) })|.
    ENDIF.
  ENDMETHOD.

  • Methoden in vererbten Klassen können auf alle sichtbaren Methoden zugreifen (public oder protected)
  • Methoden in vererbten Klassen können durch super-><method> explizit auf alle sichtbaren Methoden der Super-Klasse zugreifen
  • In einer redefinierten Methode ist der Aufruf der Super-Klassen-Methode keine Pflicht, kann aber unter Umständen notwendig sein
  • Durch IF .. THEN .. ELSE .. ENDIF Konstrukte können (minimale) Erweiterungen oder Einschränkungen objektorientiert in den Programmablauf integriert werden
  • Solche gewünschten Erweiterungen müssen aber bereits beinm Design der Super-Klasse berücksichtigt werden
  • Komplexere Redefinitionen sollten dann besser in eigene Methoden ausgelagert werden (Clean Code)
(C) Brandeis Consulting📁

Übung: "Vererbt"

Überblick

Es wird eine universell einsetzbare Super-Klasse für einen Würfel vom Trainer bereitgestellt. Von dieser wird vererbt wodurch einige interessante Funktionen sofort nutzbar werden. Zusätzlich wird die Methode GET_DESCRIPTION redefiniert, um den neuen Würfel etwas zu erweitern.

Lernziele

  • Klasse mit Vererbung von Super-Klasse üben
  • Redefinition von Methoden üben
  • Implementierungen mit super->in Redefinitionen üben
  • Navigation in Klassenhierarchien üben

Vererbt

(C) Brandeis Consulting📁

Eclipse Tipps (1)

Methodensignatur mit F2 anzeigen

F2 Signatur anzeigen

Mausnavigation

(C) Brandeis Consulting📁

Eclipse Tipps (2)

Sicht Outline

Eclipse Outline

Leider zeigt die Sicht Outline bei den Erben kaum Informationen an. Daher ist eine Navigation zur Super-Klasse notwendig.

Navigation im Source Editor

Der ABAP Source Editor bietet am oberen Rand eine Schnellnavigation zu den Methoden und Attributen einer Klasse.

(C) Brandeis Consulting📁

Eclipse Tipps (3)

Eclipse Popup Vererbungsanzeige

Eclipse Strg+O

Leider gut versteckt: auf die Klasse gehen und dann
2x Strg+O drücken.

Classic Outline

Über das Addon ADT Classic Outline vom Eclipse Marketplace kann die von der SE80 gewohnte Sicht nachgerüstet werden. Im ABAP Backend muss dazu zusätzlich etwas per abapGit installiert werden.

(C) Brandeis Consulting📁