Sunteți pe pagina 1din 16

Programarea Orientată Obiect în SAP ABAP

Curs de inițiere
Ziua 1

1. Introducere in programarea orientata obiect. Notiuni introductive.

2. Conceptul de obiect si diferenta fata de programarea procedurala.

3. Clase locale, atribute si metode in SAP ABAP.

4. Constructorul si constructorul static.


Introducere in programarea orientata obiect. Notiuni introductive.

Programarea orientată pe obiecte(object-oriented programming) este o metodă de programare


care constă în identificarea unor obiecte, cu operaţii (metode/actiuni) specifice asociate şi
realizarea comunicării între aceste obiecte.

Elementul constructiv – obiectul este o instanţă a unei clase (tip de dată definită de utilizator).

Clasa este conceptul de bază în POO ce reuneşte o colecţie de obiecte care partajează aceeaşi
listă de atribute si cuprinde definiţiile datelor şi operaţiilor ce caracterizează obiectul.

Instanțierea înseamnă atribuirea unor proprietăți specifice clasei, astfel încât aceasta să indice
un obiect anume, care se diferențiază de toate celelalte obiecte.

Un obiect este caracterizat de stare, comportament şi identitate.


Conceptul de obiect si diferenta fata de programarea procedurala.

Obiectul este conceptul de bază în POO care asociază datele împreună cu


operaţiile necesare prelucrării. Datele sunt informaţii descrise de o mulţime
de atribute ale obiectului, iar operaţiile acţionează asupra atributelor
obiectului şi eventual, asupra altor obiecte. Modelul orientat obiect se
poate ilustra ca în figura alaturata.
Asadar, avem un grup de atribute ale obiectelor cu actiunile lor.
Incapsularea este proprietatea obiectelor de a-si ascunde o parte din date
si metode. Din exteriorul obiectului sunt accesibile ("vizibile") numai datele Modelul orientat obiect
si metodele publice. Pe acest concept, numit incapsulare, se sprijină
programarea orientată obiect.

 Programarea procedurala se bazeaza pe apeluri de proceduri sau liste simple de procedure, functii
sau subrutine.
 În POO (Programare Orientată pe Obiecte) programele sunt create ca o colecție de obiecte, unități
individuale de cod care interacționează unele cu altele, deci se bazeaza pe instantierea obiectelor.
Clase

Metodele sunt comportamente ale clasei, de exemplu metoda DESCRIBE_BIKE furnizeaza


informaţii de stare a obiectului – returneaza descrierea unui bike.
Atributele sunt caracteristi ale clasei( brand-ul si culoarea bicicletei).
Reprezentarea grafica a conceptului de clasa a fost standardizat prin diagramele de clase UML:
Nume Clasa LCL_BIKE

+ Atribut 1 - MV_BRAND
+ Atribut 2 - MV_COLOR
+ SET_BRAND (IV_BRAND)
+ Metoda 1 (lista arg)
+ SET_COLOR (IV_COLOR)
+ Metoda 2 (lista arg)
+ DESCRIBE_BIKE( RV_DESCR)

Tipurile posibile de specificatori de acces sunt:


➢ Public – şi este reprezentat în cadrul diagramelor prin caracterul „+”.
➢ Private – şi este reprezentat în cadrul diagramelor prin caracterul „-”.
➢ Protected – şi este reprezentat prin caracterul „#”.
https://creately.com
Exemplu de programare procedurala:

CALL FUNCTION 'SET_BRAND'


Rezultate:
EXPORTING Salut! Sunt un bike Scott de culoare verde.
iv_brand = 'Scott'.
Salut! Sunt un bike Merdia de culoare gri.
CALL FUNCTION 'SET_COLOR'
EXPORTING Datele existente sunt inlocuite(rescrise) cu date noi.
iv_color = 'verde'.
In programarea procedurala avem o singura instanta
CALL FUNCTION 'DESCRIBE_BIKE'. intr-o sesiune interna.
CALL FUNCTION 'SET_BRAND'
EXPORTING
iv_brand = 'Giant'.

CALL FUNCTION 'SET_COLOR'


EXPORTING
iv_brand = 'gri'.

CALL FUNCTION 'DESCRIBE_BIKE'.


Exemplu POO:

Rezultate:
START-OF-SELECTION.
Salut! Sunt un bike Scott de culoare verde.
DATA go_scott TYPE REF TO lcl_bike. Salut! Sunt un bike Merdia de culoare gri.
DATA go_giant TYPE REF TO lcl_bike.
DATA gv_descr TYPE string.
Au fost create 2 instante ale clasei LCL_BIKE in
CREATE OBJECT go_scott. sesiunea interna curenta:
go_scott->set_brand( iv_brand = 'Scott' ).
go_scott->set_color( iv_color = 'verde' ).

CREATE OBJECT go_giant. GO_SCOTT GO_GIANT


go_giant->set_brand( iv_brand = 'Giant' ).
go_giant->set_color( iv_color = 'gri' ). - MV_BRAND Scott - MV_BRAND Giant
- MV_COLOR gri - MV_COLOR verde
gv_descr = go_scott->describe_bike( ).
WRITE: / gv_descr.
+ SET_BRAND (IV_BRAND) + SET_BRAND (IV_BRAND)
gv_descr = go_giant->describe_bike( ).
+ SET_COLOR (IV_COLOR) + SET_COLOR (IV_COLOR)
WRITE: / gv_descr.
+ DESCRIBE_BIKE( RV_DESCR) + DESCRIBE_BIKE( RV_DESCR)
Clase locale, atribute si metode in SAP ABAP.

Clasa este compusa din 2 parti: implementare si definitie.

CLASS lcl_bike DEFINITION.

ENDCLASS. "lcl_bike DEFINITION

CLASS lcl_bike IMPLEMENTATION.

ENDCLASS. "lcl_bike DEFINITION


Atribute

Modificatorii de acces (vizibilitate): CLASS lcl_bike DEFINITION.

➢ public PUBLIC SECTION.


➢ private DATA: mv_attribute1 TYPE local_type.
DATA: mv_attribute2 TYPE global_type.
➢ protected DATA: mv_attribute3 TYPE i READ-ONLY.
DATA: mv_attribute4 TYPE REF TO zcl_color.
ENDCLASS. "lcl_bike DEFINITION

Atributele clasei:
➢ contin date/caracteristici care pot fi stocate in obiectul unei clase.
➢ pot fi de tip: elementar, structura sau tip-tabel si se declara cu ajutorul tipurilor locale,
globale sau referinta.

Un atribut poate fi declarat folosind optiunea READ-ONLY ceea ce inseamna ca acest atribut
poate fi accesat din exteriorul clasei, insa poate fi modificat doar de metodele clasei respective.
Metode

Metodele unei clase definesc comportamentul clasei respective. La rularea programului,


obiectele vor comunica intre ele prin intermediul apelului acestor metode.

Modificatorii de acces (vizibilitate):


➢ public
➢ private
➢ protected
Obiecte - Instantele claselor

Instanţierea este operaţia prin care se creează (defineşte) un obiect şi apoi se iniţializează cu
date specifice.
DATA .... TYPE REF TO .... este utilizat pentru a defini o variabila cu referinta la o clasa, cu
alte cuvinte un obiect.
Instantiere se face cu instr. CREATE OBJECT care creaza un obiect.
START-OF-SELECTION.
DATA go_scott TYPE REF TO lcl_bike.
DATA go_giant TYPE REF TO lcl_bike.
DATA gv_descr TYPE string.

CREATE OBJECT go_scott.


go_scott->set_brand( iv_brand = 'Scott' ).
go_scott->set_color( iv_color = 'verde' ).
CREATE OBJECT go_giant.
go_giant->set_brand( iv_brand = 'Giant' ).
go_giant->set_color( iv_color = 'gri' ).

gv_descr = go_scott->describe_bike( ).
WRITE: / gv_descr.
gv_descr = go_giant->describe_bike( ).
WRITE: / gv_descr.
Metode si Atribute Statice
Metodele statice pot fi apelate fara a mai fi nevoie sa se instantieze un obiect din acea
clasa.

Unui atribut static i se rezervă o singură zonă de memorie, acest atribut este unic si e vizibil
pentru toate instantele unei clase (obiectelor).
Atributele statice sunt utile pentru constante, buffer-e, informatii administrative precum
numarul de instante create intr-o sesiune.

Declararea si apelul metodelor statice:

CLASS lcl_data DEFINITION.


PUBLIC SECTION.
ClASS-DATA: mv_date TYPE d.
CLASS-METHODS: get_current_date IMPORTING iv_date TYPE d.
ENDCLASS. "lcl_data DEFINITION

START-OF-SELECTION.
lcl_data=>mv_date = sy-datum.
lcl_data=>get_current_date( ).
Metode si Atribute

Metode de tip Instanță Metode Statice

Declarararea se face cu METHOD Declarararea se face cu CLASS-METHODS

Poate accesa atat membri statici cat si nestatici Poate accesa numai membri statici

Membri de tip instanță Membri Statici


Declarararea se face cu DATA Declarararea se face cu METHOD
Un membru nestatic a unei clase NU exista înainte de a Un membru static a unei clase exista înainte de a fi
fi creat un obiect din clasa respectiva. creat un obiect din clasa respectiva.

Există pentru fiecare instanță(obiect) separat. Un membru static este global și nu aparţine nici unuia
dintre obiectele clasei, dar este partajata de toate
acestea.
Constructor

Constructorul este o metodă specială a unei clase, care este membru al clasei. Constructorii
sunt apelaţi atunci când se instanţiază obiecte din clasa respectivă, ei asigurând iniţializarea
corectă a tuturor variabilelor membru ale unui obiect şi garantând că iniţializarea unui obiect
se efectuează o singură dată.
CLASS lcl_bike DEFINITION.
PUBLIC SECTION.
METHODS:
constructor IMPORTING iv_brand TYPE string
iv_color TYPE string.
ENDCLASS. "lcl_bike DEFINITION

START-OF-SELECTION.
DATA go_scott TYPE REF TO lcl_bike.

CREATE OBJECT go_scott


EXPORTING
iv_brand = 'Scott'
iv_color = 'verde'.
Constructorul si constructorul static

CLASS_CONSTRUCTOR e un constructor de tip static si va fi accesat automat cand sistemul va


accesa clasa pentru prima data.

1. Fiecare clasa poate avea un singur constructor static;


2. Constructorul static NU poate avea parametri de import si exceptii la interfata;
3. Constructorul static NU poate fi apelat explicit;
4. Constructorul trebuie definit in sectiunea publica;

CONSTRUCTOR( ) este un constructor de tip instanta si va fi accesat la instantierea obiectului cu


CREATE_OBJECT.

1. Fiecare clasa poate avea un singur constructor;


2. Constructorul poate avea doar parametri de import si exceptii;
3. Atunci cand este generate o exceptie in constructor, obiectul nu este creat si nu se mai aloca
memorie pentru acesta;
4. Constructorul trebuie definit in sectiunea publica;
Mulțumesc!

S-ar putea să vă placă și