Introducere in programarea orientata obiect

Clase locale

Componentele unei clase
Atributele si metodele
Exercitiu complet clasa locala: atribute si metode
Conceptul de obiect
Tipuri de atribute si metode si apelarea acestora
Atribute si metode statice
Apelarea metodelor si a atributelor
Constructorul si constructorul static

Mostenirea si Polimorfismul

Evenimentele

Clasa abstracta si clasa finala

Clase globale

Diverse – utile interviu ABAP OOP

Clasificare clase
Clasificare clase

În contextul SAP ABAP, clasele pot fi definite

  • fie ca: clase locale (local classes),
  • fie ca clase globale (global classes)

Iată diferențele dintre cele două:

1. Clase Locale (Local Classes):
  • Definire în interiorul unui program
    • Clasele locale sunt definite în interiorul unui program ABAP
    • Ele sunt vizibile numai în interiorul programului în care au fost definite.
  • Limitate la contextul programului
    • Aceste clase sunt folosite pentru a organiza și împărți logica programului
    • Metodele și atributele clasei locale sunt accesibile doar în cadrul programului
2. Clase Globale (Global Classes):
  • Definire în afara unui program
    • Clasele globale sunt definite în afara programelor, într-o bază de date centrală a dicționarului de date SAP.
    • Ele pot fi accesate și utilizate în întreaga aplicație SAP și în diferite programe și funcții.
  • Accesibile la nivel global:
    • Clasele globale pot fi utilizate în mai multe programe și funcții în cadrul aceluiași sistem SAP.
    • Acestea oferă o modalitate de a organiza logica și funcționalitatea care trebuie să fie distribuită și reutilizată pe scară largă în întreaga aplicație.

 

În SAP ABAP orientat pe obiect (OOP), când definești o clasă, aceasta este împărțită în două părți principale: partea de definire (DEFINITION) și partea de implementare (IMPLEMENTATION). Aceste două părți sunt utilizate pentru a separa detaliile despre structura și comportamentul clasei.

Partea de Definire (DEFINITION):
  • Partea de definire a clasei conține declarațiile publice, protejate sau private ale clasei, cum ar fi metodele, atributele și evenimentele clasei.
  • Aceste elemente sunt definite folosind cuvinte cheie precum PUBLIC SECTION și PROTECTED SECTIONsau PRIVATE SECTION.

Exemplu parte de definire:

CLASS lcl_employee IMPLEMENTATION.
  METHOD constructor.
    name = ''.
    age = 0.
  ENDMETHOD.
  METHOD set_details.
    name = iv_name.
    age = iv_age.
  ENDMETHOD.
  METHOD display_details.
    WRITE: / 'Name:', name,
           / 'Age:', age.
  ENDMETHOD.
ENDCLASS.

În acest exemplu:

  • Clasa lcl_employee este definită în interiorul aceleiași unități de programare (de exemplu, în interiorul unui program sau funcției ABAP).
  • Partea de definire (PUBLIC SECTION) conține metodele publice (constructor, set_details, display_details), care pot fi apelate din exteriorul clasei, și atributele publice (name și age), care pot fi accesate și modificate din exteriorul clasei.
  • Partea privată (PRIVATE SECTION) conține atributele private (name și age), care sunt vizibile doar în interiorul clasei și nu pot fi accesate din exterior.
Partea de Implementare (IMPLEMENTATION):
  • Partea de implementare a clasei conține logica efectivă a metodelor definite în partea de definire. Aici sunt implementate instrucțiunile specifice fiecărei metode.
  • Este în această parte a clasei unde se definește comportamentul fiecărei metode definită în partea de definire.
  • Partea de implementare este accesibilă doar în interiorul clasei respective și este definită folosind cuvântul cheie IMPLEMENTATION.

 

CLASS lcl_employee IMPLEMENTATION.
  METHOD constructor.
    name = ''.
    age = 0.
  ENDMETHOD.
  METHOD set_details.
    name = iv_name.
    age = iv_age.
  ENDMETHOD.
  METHOD display_details.
    WRITE: / 'Name:', name,
           / 'Age:', age.
  ENDMETHOD.
ENDCLASS.

În această parte de implementare, am definit logica pentru metodele constructor, set_details și display_details. Metoda constructor este apelată atunci când se creează un obiect al clasei și inițializează atributele cu valori implicite. Metoda set_details primește parametri și setează atributele clasei, iar metoda display_details afișează detaliile angajatului.

Programul complet de mai sus:

ZEXAMPLE_LOCAL_CLASS.
CLASS lcl_employee DEFINITION.
  PUBLIC SECTION.
    METHODS: constructor,
             set_details IMPORTING iv_name TYPE string
                        iv_age TYPE i,
             display_details.
  PRIVATE SECTION.
    DATA: name TYPE string,
          age TYPE i.
ENDCLASS.
CLASS lcl_employee IMPLEMENTATION.
  METHOD constructor.
    name = ''.
    age = 0.
  ENDMETHOD.
  METHOD set_details.
    name = iv_name.
    age = iv_age.
  ENDMETHOD.
  METHOD display_details.
    WRITE: / 'Name:', name,
           / 'Age:', age.
  ENDMETHOD.
ENDCLASS.
DATA: employee_instance TYPE REF TO lcl_employee.
START-OF-SELECTION.
  CREATE OBJECT employee_instance.
  employee_instance->set_details( 'John Doe', 30 ).
  employee_instance->display_details().
Nu am găsit niciun atașament
Nu am găsit niciun atașament