Object Oriented SAP ABAP-Objects and Classes
w tym samouczku poznamy jedną z zasad, na których zbudowany jest ABAP-Programowanie obiektowe.
dowiemy się, co oznacza OOP, a także co pociąga za sobą w świecie SAP ABAP.
co to jest OOP?
- Programowanie obiektowe dzieli zadania na obiekty posiadające Dane i funkcje.
- ta metoda sprawia, że programowanie jest zrozumiałe, elastyczne i wielokrotnego użytku.
- Programowanie obiektowe (OOP) zostało stworzone z myślą o prostocie i elokwencji.
- sprawia, że ludzie komunikują się jasno, wymieniają informacje i idee za pomocą wspólnego języka – języka przedmiotów.
- obiekty te składają się z dwóch głównych cech-właściwości (danych) i zachowania (lub funkcji)
główne cechy OOP to–
- abstrakcja danych
- enkapsulacja
- nacisk na dane zamiast procedury
- wykorzystanie rzeczywistych podmiotów zwanych „obiektem”
- prywatność i Ochrona danych
Bądź na bieżąco z najnowszymi trendami technologicznymi
Dołącz do DataFlair na Telegramie!!
POP vs OOP
programowanie zorientowane na procedury (POP) podchodzi do problemów w metodzie odgórnej. Podkreśla procedurę, a nie DANE w sposób liniowy.
zobaczmy kilka różnic między POP i OOP–
POP | OOP |
POP oznacza programowanie zorientowane na procedury | OOP oznacza Programowanie obiektowe |
skupia się na procedurze (wykonywanie zadań), a nie na danych (zadania) | skupia się na danych/zadaniach, a nie na procedurze |
POP podąża za modą odgórną w rozwiązywaniu problemów | OOP podąża za modą oddolną w rozwiązywaniu problemów |
dzieli program na mniejsze części zwane funkcje lub Moduły | dzieli program na mniejsze części zwane obiektami |
funkcje udostępniają dane globalne i dane nie mogą być ukryte przed sobą | funkcje nie udostępniają danych globalnych-możesz zdecydować, kto może uzyskać dostęp do Twoich danych |
nie ma większego nacisku na ochronę danych | jednym z głównych punktów zainteresowania w OOP jest ochrona danych |
rozszerzenie funkcjonalności i dodawanie danych jest żmudne i czasochłonne | rozszerzenie funkcjonalności i dodawanie nowych danych jest bardzo łatwe, po prostu dodawanie nowych obiektów |
pojęcia dziedziczenia, polimorfizmu, enkapsulacji nie są używane | pojęcia dziedziczenia, polimorfizmu, enkapsulacji stanowią podstawę OOP |
np. C, Pascal, FORTRAN | np. Java, Python, C++ |
OOP w ABAP
- początkowo SAP rozwijał ABAP jako język POP.
- jednak, w miarę upływu czasu, przenieśli go i przekształcili w język OOP
- stąd ABAP podąża teraz za założeniami orientacji obiektowej i paradygmatów podobnych do obiektów.
- w ramach OOP, ABAP wykorzystuje pojęcia dziedziczenia, przeciążania, ukrywania danych itp. dla lepszej funkcjonalności.
Zacznijmy od zrozumienia kilku podstawowych terminów OOP
podstawowe terminy, aby wiedzieć
termin | znaczenie |
obiekt | rzeczywisty byt, który ma Dane i zachowanie |
Klasa | złożony zbiór obiektów, które zawierają głównie pola danych i właściwości odnoszące się do danych |
metoda | zachowanie obiektu tzn. moduły funkcyjne, które obiekt wykonuje |
element | element danych lub funkcja elementu klasy |
instancja | synonim obiektu, zwykle używany jako 'instancja klasy’ |
Tworzenie instancji | tworzenie nowego obiektu klasy |
obiekty w SAP ABAP
- obiekt jest rzeczywistą jednostką zawierającą dane i zachowanie.
- te cechy i zachowanie określają stan obiektu i działania, które obiekt będzie wykonywał.
- obiekt, jak wspomniano wcześniej, jest wzorcem lub instancją klasy.
- dla np. pracownika, książki, jabłoni – wszystko to są przedmioty.
Tworzenie obiektu w ABAP
zobaczmy jak utworzyć obiekt w ABAP –
składnia:
DATA: <object_name> TYPE REF TO <class_name>. "Create reference variable CREATE Object: <object_name>. #Create object from ref. var.
przykład:
DATA: dataflairobject TYPE REF TO dataflairclass. CREATE Object: dataflairobject.
przykład raportu:
REPORT ZR_SS_DATAFLAIR_SAMPLE_001.CLASS ClassDataFlair Definition.Public Section.DATA: dataflairtext(45) VALUE 'Data Flair OOPS tutorial in ABAP: data.'.METHODS: DataFlairMethod.ENDCLASS.CLASS ClassDataFlair Implementation.METHOD DataFlairMethod.Write:/ 'Data Flair OOPS tutorial in ABAP: method.'.ENDMETHOD.ENDCLASS.START-OF-SELECTION.DATA: ClassDataFlair TYPE REF TO ClassDataFlair.CREATE Object: ClassDataFlair.Write:/ ClassDataFlair->dataflairtext.CALL METHOD: ClassDataFlair->DataFlairMethod.
wyjście
Data Flair OOPS tutorial w ABAP: method.
klasy w SAP ABAP
- klasa jest złożonym zbiorem obiektów
- zawiera elementy danych (cechy) i metody elementów (funkcje) razem zawinięte w jedną całość o nazwie obiekt
- klasy są miejscem, w którym obiekty są tworzone i definiowane
- definiujemy i deklarujemy również moduły funkcyjne w klasie
- możemy opisać prywatność klasy
- oznacza to, że możemy zdefiniować, kto może mieć dostęp do konkretnych danych klasy
Tworzenie klasy w ABAP
Tworzenie klasy w ABAP ma dwa kroki –
1. Deklaracja
Składnia–
CLASS <class_name> DEFINITION.//define classENDCLASS.
Przykład–
CLASS dataflairclass DEFINITION.//define classENDCLASS.
2. Definicja
składnia–
CLASS <class_name> IMPLEMENTATION.//define classENDCLASS.
przykład–
CLASS dataflairclass IMPLEMENTATION.//define classENDCLASS.
atrybuty w SAP ABAP
- atrybuty są charakterystyką klasy
- mogą mieć dowolny wstępnie zdefiniowany typ danych, taki jak P, F, I itp.
- musimy zadeklarować atrybuty w sekcji deklaracja klasy
- atrybuty są dwóch typów:
- instancja: obejmuje to stan obiektu specyficzny dla instancji, zmiany są różne dla wszystkich obiektów i jest to zadeklarowane przez instrukcję danych
-
- statyczne: obejmuje to wspólny stan klasy, który ma być współdzielony przez wszystkie instancje klasy, dlatego gdy zmienimy jeden stan, wszystkie inne obiekty będą mogły zobaczyć zmianę, zadeklarowaną przez instrukcję CLASS-DATA
metody w SAP ABAP
- metoda jest modułem lub funkcją
- jest to zachowanie obiektu klasy
- metoda może uzyskać dostęp do dowolnej charakterystyki klasy
- zawiera akcje do wykonania przez obiekty, które wywołują klasę
- definicja metody może, ale nie musi, zawierać parametry, które są przekazywane, gdy metoda is nazwane
- możemy zdefiniować metodę używając instrukcji METHOD I ENDMETHOD
składnia:
METHOD…ENDMETHOD
dostęp do atrybutów i metod w SAP ABAP
1. Metody i atrybuty są dostępne dla obiektów klasy
2. Specyfikatory dostępu – public, private I protected – działają tak samo, jak dla specyfikatorów dostępu do klas
- jeśli zadeklarujemy je jako publiczne, mogą być dostępne dla dowolnej klasy
- kiedy deklarujemy je jako prywatne, nie mogą być dostępne dla żadnej klasy
- jeśli zadeklarujemy je jako chronione, mogą być dostępne tylko przez dziedziczenie klas
zobaczmy przykład jak napisać klasy, atrybuty i metody oraz uzyskać do nich dostęp –
przykład:
REPORT ZR_SS_DATAFLAIR_SAMPLE_001.CLASS dataflairclass Definition. PUBLIC Section. Data: dataflairtext01 Type char25 Value 'Public Data Flair'. Methods dataflairmethod. PROTECTED Section. Data: dataflairtext02 Type char25 Value 'Protected Data Flair'. PRIVATE Section. Data: dataflairtext03 Type char25 Value 'Private Data Flair'.ENDCLASS.CLASS dataflairclass Implementation. Method dataflairmethod. Write: / 'Public Method:', / dataflairtext01, / dataflairtext02, / dataflairtext03. Skip. EndMethod.ENDCLASS.Start-Of-Selection. Data: Objectx Type Ref To dataflairclass. Create Object: Objectx. CALL Method: Objectx->dataflairmethod. Write: / Objectx->dataflairtext01.
wyjście
Public Data Flair
Protected Data Flair
private Data FlairPublic Data Flair
przykład atrybutów statycznych w SAP ABAP
REPORT ZR_SS_DATAFLAIR_SAMPLE_001.CLASS dataflairclass Definition. PUBLIC Section. CLASS-DATA: dataflairname Type char45, dataflairdata Type I. Methods: dataflairmethod.ENDCLASS.CLASS dataflairclass Implementation. Method dataflairmethod. Do 4 Times. dataflairdata = 1 + dataflairdata. Write: / dataflairdata, dataflairname. EndDo. Skip. EndMethod.ENDCLASS.Start-Of-Selection. dataflairclass=>dataflairname = 'ABAP Object Oriented Programming'. dataflairclass=>dataflairdata = 0. Data: Object1 Type Ref To dataflairclass, Object2 Type Ref To dataflairclass. Create Object: Object1, Object2. CALL Method: Object1->dataflairmethod, Object2->dataflairmethod.
konstruktory w SAP ABAP
- konstruktory są specjalnymi typami metod
- kiedy tworzymy obiekt, musimy go zainicjalizować i konstruktory wykonują zadanie inicjalizacji danych dla obiektów
- program wywołuje konstruktory automatycznie, gdy obiekt klasy jest tworzony
- konstruktor wywoła operację dołączoną przy każdym nowo utworzonym obiekcie w wykonaniu
przykład konstruktorów ABAP
REPORT ZR_SS_DATAFLAIR_SAMPLE_001.CLASS dataflairclass Definition. PUBLIC Section. Methods: dataflairmethod, constructor.ENDCLASS.CLASS dataflairclass Implementation. Method dataflairmethod. Write: / 'This is the method'. EndMethod. Method constructor. Write: / 'This is the constructor'. EndMethod.ENDCLASS.Start-Of-Selection. Data Object1 Type Ref To dataflairclass. Create Object Object1.
wyjście
Operator ME w SAP ABAP
- ilekroć przedefiniujemy zmienną w metodzie o innej wartości, ta metoda użyje przedefiniowanej wartości zmiennej
- jednak jeśli chcesz uzyskać dostęp do pierwotnie zadeklarowana wartość, wtedy można użyć operatora Me
- zobaczmy przykład użycia operatora Me
przykład operatora Me w ABAP
REPORT ZR_SS_DATAFLAIR_SAMPLE_001.CLASS dataflairclass Definition. PUBLIC Section.Data dataflairtext Type char25 Value 'Here we have class value'. Methods dataflairmethod.ENDCLASS.CLASS dataflairclass Implementation. Method dataflairmethod.Data dataflairtext Type char25 Value 'Here we have method value'. Write: / ME->dataflairtext, / dataflairtext. ENDMethod.ENDCLASS.Start-Of-Selection. Data objectx Type Ref To dataflairclass. Create Object objectx. CALL Method objectx->dataflairmethod.
wyjście
tutaj mamy wartość metody
podsumowanie
w tym tutorialu dowiedzieliśmy się o podstawach, na których ABAP i wiele innych języków są zbudowane-programowanie obiektowe. Dowiedzieliśmy się o tym, jak orientacja obiektowa różni się od orientacji procedury, jej znaczeniu i najważniejszych terminach.
w części #2 tego samouczka zagłębimy się w dalsze koncepcje orientacji obiektowej, takie jak dziedziczenie, polimorfizm itp.