This is a test message to test the length of the message box.
Login
ABAP OO Grundlagen
Erstellt von Software-Heroes

ABAP OO - Grundlagen

In diesem Artikel schauen wir uns einmal die Grundlagen der Entwicklung im objektorientierten Bereich an und starten damit eine kleine Serie von Artikeln.

Werbung

Wenn du mal wieder nach einer neuen Stelle Ausschau halten solltest, dann wird dir auffallen das dort fast immer steht: Entwickler mit ABAP & ABAP OO. Eigentlich sollte das ein grundsätzliches Verständnis für jeden Entwickler sein, dass dieser auch die neuesten Technologien und Sprachelemente beherrscht. Leider sieht es bei vielen Entwicklern anders aus. Man hat zwar etwas von ABAP OO gehört, doch verwenden würde man es nur wenig oder nur in einem einfachen Stil. Dabei werden solide und starke OO Kenntnisse für viele saubere Architekturen auch innerhalb von SAP benötigt. An dieser Stelle wollen wir mit unserem kleinen Grundkurs aufsetzen.

 

Verwendung

Im Gegensatz zur funktionalen Programmierung setzt die objektorientierte Welt vor allem auf die Verwendung von gekapselten Objekten, um so ein geschlossenes Modell zu erschaffen. Dieses Modell besitzt Attribute und Methoden, die ein Verwender im Endeffekt nutzen kann, um so mit dem Objekt zu interagieren. Dabei dient die Klasse erst einmal als eine Art Bauplan, der immer wieder verwendet werden kann. Durch die Separierung der Funktionen und Attribute kann die Klasse immer wieder verwendet werden, dieses Verhalten findest du Heute bereits in Funktionsgruppen und bei Funktionsbausteinen, wobei man einige Abstriche machen muss, da die Daten zur Laufzeit nicht automatisch gelöscht werden in der Funktionsgruppe (globale Daten).

Damit können Klassen und Methoden im ganzen System wiederverwendet werden, was den Reuse solcher Objekte noch einmal erhöht und zu den Stärken von Klassen gehört.

 

Beispiele

In diesem Abschnitt wollen wir dir einmal ein paar Beispiele näher bringen, wie solche wiederverwendbaren Klassen aussehen können und wo sie überall genutzt werden können.

  • Logging - Für das Logging von Nachrichten gibt es in SAP ein ganz zentrales Framework, das BALLOG. Um mit dem Framework zu interagieren gibt es verschiedene Bausteine und Konfigurationen, die die Nachrichten übernehmen, anzeigen oder auf der Datenbank speichern können. Die Funktionen, das Speichern der Meldungen, die Anzeige und die Sicherung auf der Datenbank können leicht wiederverwendbar in eine Klasse implementiert werden, damit du nicht jedes Mal alle Funktionsbausteine neu übernehmen musst oder vielleicht sogar Logiken von einem Programm zum Nächsten kopierst.
  • Datenmapping - Du führst ein Mapping von BAPI zu Datenbank Daten durch und das in beide Richtungen? Wahrscheinlich wirst du dieses Mapping auch in einem nächsten Programm gebrauchen können. Deshalb solltest du es in einer globalen Klasse implementieren, um die Funktionen jederzeit wiederverwenden zu können.
  • Verarbeitung - Du führst verschiedene Verarbeitungsschritte in einer Kette aus und jeder Schritt ist recht komplex? Hier solltest du nicht alles in einen Report packen oder eine Monsterklasse aufbauen, sondern Funktionen wie Datenvalidierung, Mapping und Buchung in verschiedene wiederverwendbare Objekte implementieren.

 

Du merkst, bei vielen Beispielen geht es um die Wiederverwendung von Code an anderen Stellen. Der schlechteste Ansatz wäre das Kopieren von solchem Code, da du ebenfalls Fehler mitkopieren würdest, die du später an zwei oder drei Stellen korrigieren darfst.

Hinweis: Bei jeder Entwicklung sollte deshalb DRY (Don't repeat yourself) an erster Stelle stehen, wenn du merkst du wiederholst dich, halte inne und beginne mit dem Refactoring.

 

Besonderheit

Im Gegensatz zu Java oder anderen objektorierntierten Sprachen gibt es auch im ABAP Umfeld einige Besonderheiten, die man beachten sollte.

  • Konstruktor - ABAP Klassen besitzen zwei Konstruktoren, den CONSTRUCTOR der bei jeder Instanziierung aufgerufen wird und den CLASS_CONSTRUCTOR der bei der ersten Verwendung der Klasse durchlaufen wird, egal ob du Konstanten, statische Methoden oder eine Instanz verwendest.
  • Destruktor - Es gibt keinen richtigen Destruktor, den man auch ausprägen kann. Bevor du ein Objekt löschen möchtest, musste du also selbst eine Methode implementieren (z.B. FREE oder CLEAN) und aufrufen.
  • Einfachvererbung - Jede Klasse kann maximal eine Oberklasse haben von der geerbt (Attribute, Methoden) wird.
  • Interfaces - Können miteinander zu größeren Interfaces verschachtelt werden und öffentliche Attribute besitzen, die dann entsprechend in die implementierenden Klassen vererbt werden.

 

Begriffe

Im objektorientierten Umfeld wirst du immer wieder auf die gleichen Begriffe stoßen, deshalb wollen wir dir an dieser Stelle noch einmal die wichtigsten Begriffe näher bringen und den Hintergrund erklären.

 

Klasse 

Ist der eigentliche Bauplan für ein Objekt und enthält die Attribute und Methoden, die der Verwender am Ende nutzen kann. Die einfachste Implementierung einer solchen Definition kann wie folgt aussehen:

CLASS lcl_example DEFINITION.
ENDCLASS.

 

Objekt/Instanz

Die beiden Begriff werden gleich verwendet und beschreiben eine "Variable" die ein verwendebare Klasse instanziiert. Die Instanziierung geschieht durch CREATE OBJECT oder besser durch NEW:

DATA(go_instance) = NEW lcl_example( ).

 

Instanziierung

Wie du oben gesehen hast, entsteht ein Objekt durch Instanziierung der Klasse (des Bauplans) und Erzeugung einer Referenz auf einer Variablen. Aus einer Klasse ist ein Objekt oder auch eine Instanz geworden.

 

Eigenschaft/Attribut

Ein Attribut ist eine Variable oder eine Konstante in einer Klasse, die du benutzen kannst und in der du Daten halten kannst. Ein Attribut verhält sich in einer Klasse wie eine globale Variable und steht jeder Methode zur Verfügung.

CLASS lcl_example DEFINITION.
  PUBLIC SECTION.
    DATA:
      gd_flag TYPE abap_bool.
ENDCLASS.

 

Methode

Die Methode ist wie FORM oder ein Funktionsbaustein in einer Klasse, sie führt verschiedene Aktionen innerhalb der Klasse aus, ändert Variablen oder gibt einfach ein Ergebnis zurück.

CLASS lcl_example DEFINITION.
  PUBLIC SECTION.
    METHOD:
      calculate_correct_value
        IMPORTING
          id_value TYPE string
    RETURNING VALUE(rd_result) TYPE i.
ENDCLASS.

 

Fazit

Bevor wir mit den eigentlichen Beispielen und dem Coding starten, wollten wir dir erst einmal eine kurze Einführung geben zum Theme Objektorientierung im Bereich ABAP. Mit dem nächsten Artikel werden wir etwas tiefer in die Grundlagen des Programmierens mit Objekten einsteigen.


Enthaltene Themen:
OOABAP OOGrundlagen
Kommentare (0)
Werbung

ABAP OO - Redefinition und Getter/Setter

Kategorie - ABAP

In diesem Artikel schauen wir uns das Thema Redefinition an und wie dir Getter und Setter bei einheitlichen Schnittstellen helfen.

18.06.2021

ABAP OO - Interface und abstrakte Klasse

Kategorie - ABAP

Wir hatten dir bereits die Vererbung in ABAP OO näher gebracht und schauen uns nun Interfaces, sowie abstrakte Klassen an und wie sie dir bei der Modellierung helfen.

11.06.2021

ABAP OO - Dynamisch, Statisch, Super

Kategorie - ABAP

In diesem Artikel wollen wir dir einmal den Unterschied von dynamischen und statischen Klassen zeigen und was du damit machen kannst. Weiterhin schauen wir uns die verschiedenen Konstruktoren an.

04.06.2021

ABAP Unit Quick Guide

Kategorie - ABAP

Unser aktuelles E-Book ist nun bei Amazon verfügbar, wir möchten dir kurz aufzeigen, was du in dem Buch erwarten kannst und es dir am Ende bringt.

28.05.2021

ABAP OO - Klasse und Vererbung

Kategorie - ABAP

Im nächsten Teil der ABAP OO Grundlagen wollen wir dir den Grundbegriff der Klasse und deren Ausprägung zeigen, sowie es eigentlich mit der Vererbung läuft zwischen den einzelnen Objekten.

07.05.2021