ABAP Objects

Objektorientiertes ABAP für moderne Clean Core SAP Systeme

Polymorphie (Polymorphism)

Polymorphie (Polymorphism)

Polymorphism

Definition Wikipedia

Die Polymorphie der objektorientierten Programmierung ist eine Eigenschaft, die immer im Zusammenhang mit Vererbung und Schnittstellen (Interfaces) auftritt. Eine Methode ist polymorph, wenn sie in verschiedenen Klassen die gleiche Signatur hat, jedoch erneut implementiert ist.

Interpretation

Der Aufrufer kennt die Methode go().
Diese kann sehr unterschiedlich von verschiedenen Klassen implementiert sein.

Wie erreicht man Polymorphie mit ABAP Objects?

  • Polymorphie wird in den Programmiersprachen sehr unterschiedlich umgesetzt
  • ABAP Objects kennt KEINE Mehrfachvererbung sowie Mehrfachverwendung gleicher Methodennamen (mit abweichenden Signaturen)

Variante 1: Vererbung

  • Die polymorphe Methode wird auf einer höheren Ebene der Klassenhierarchie definiert (z.B. in einer abstrakten Klasse)
  • Alle erbenden Klassen redefinieren die Methode und implementieren sie entsprechend der Anforderungen
  • Nur umsetzbar, wenn man die Klassenhierarchie selbst bestimmen kann und dies sinnvoll erscheint

Variante 2: Interfaces bzw. Schnittstellen

  • Die polymorphe Methode wird innerhalb eines ABAP Objects Interface definiert
  • Alle erbenden Klassen implementieren das Interface und die dort definierten Methoden
  • Immer umsetzbar, auch wenn man keinen Einfluss auf die Klassenhierrchie (mehr) hat
  • Interessanter Nebeneffekt:
    • aus Sicht der Klasse werden Interface-Methoden mit <interface>~<method> aufgerufen
    • dadurch können unterschiedliche Interfaces die gleichen Methodennamen verwenden

Praxisbeispiel FIORI List Report

FIORI Report

(FIORI List Report Floorplan)

Szenario "To-Do-Liste"

  • sehr unterschiedliche Objekte sollen in einer gemeinsamen Liste dargestellt werden
  • alle verwendeten Objekttypen werden in Klassen implementiert, die ein bestimmtes Interface implementieren müssen
  • das Interface gewährleistet den Zugriff auf Eigenschaften wie: Image, Bezeichnung, Kategorie, Status, ...
  • Aktivitäten wie: Ausführen, Erledigt setzen, Wiedervorlage, ... werden ebenfalls über das Interface definiert und müssen entsprechend implementiert werden
  • über das Interface kann zusätzlich gesteuert werden, welche Fähigkeiten für den aktuellen Zustand verfügbar sind