Programmazione ad Oggetti ABAP
La programmazione orientata agli
Oggetti si basa sul fatto che esistono una serie di oggetti che interagiscono
tra di loro, scambiandosi messaggi , ma mantenendo ognuno il proprio stato ed i
propri dati.
Nella programmazione ad oggetti
detta anche OOP, si basa sul concetto di Oggetto.
Per capire cos’è un oggetto
prendiamo spunto dalla vita reale: un oggetto è una moto, una televisione, e
così via.
Ogni oggetto ha determinate
caratteristiche, ad esempio la moto: colore, cilindrata, velocità massima,
modello, etc; inoltre la moto può svolgere anche alcune azioni, come: svoltare
a destra o a sinistra, accelerare, frenare, etc.
Nella terminologia OOP le
caratteristiche di un oggetto vengono chiamate ATTRIBUTI,
mentre le azioni (operazioni) che un oggetto è in grado di compiere
sono detti METODI.
ATTRIBUTI
Gli attributi costituiscono lo STATO di un oggetto, cioè lo
caratterizzano e lo distinguono da un altro.
METODI
I metodi, o funzioni, o messaggi,
definiscono il COMPORTAMENTO di un
oggetto, cioè come modifica i propri dati o come interagisce con altri oggetti.
ISTANZIARE UN OGGETTO
Un oggetto può essere instanziato
più volte, ma con nomi diversi, ad esempio:
Ad un oggetto di classe moto
assegniamo il nome Moto1 così descritto:
- Marca = Kavasaki
- Colore = Rosso
- Velocità = 100
Ad un altro oggetto di classe
moto assegniamo il nome Moto2 così descritto
- Marca = Honda
- Colore = Giallo
- Velocità = 130
Come si può vedere, gli oggetti
sono diversi perché hanno caratteristiche diverse, ma condividono la stessa
struttura.
CLASSE
Una classe rappresenta
l’astrazione di un Oggetto.
Una classe specifica gli
attributi, senza indicarne il valore, e i metodi che devono avere gli oggetti
che appartengono alla classe.
Gli oggetti creati a partire da una classe vengono chiamati istanze della
classe.
Partendo da una classe, si
possono creare più oggetti con gli stessi attributi e metodi ma con valori diversi.
In SAP, esistono due diversi tipi
di classi:
- Classi Globali
- Classi Locali
CLASSI
GLOBALI
Sono oggetti storicizzati nel
repository SAP, accessibili da qualsiasi programma e devono rispettare la
seguente nomenclatura: devono iniziare per Z o Y
CLASSI
LOCALI
Sono oggetti definiti all’interno
di un report ABAP, accessibili solo dal programma in cui sono definite e non
hanno regole di nomenclatura.
La dichiarazione di una Classe
Locale si compone di due parti: Definizione
e Implementazione.
Definizione:
La definizione di una classe deve
essere fatta nei dati globali all’inizio del programma.
Nella dichiarazione di una classe
devono essere dichiarati i componenti
della classe stessa:
Attributi, Metodi ed Eventi.
Ogni componente può essere
definito come:
- Instance – ne esistono n copie una per ogni istanza della classe
- Static – ne esiste solo uno per classe ed è valido per tutte le istanze della classe
I componenti dichiarati STATIC
devono essere dichiarati come CLASS-keyword. Essi possono essere usati anche se
la classe non è stata istanziata.
I metodi dichiarati INSTANCE possono
accedere sia ad attributi INSTANCE che STATIC; mentre quelli dichiarati STATIC
possono accedere solo ad attributi STATIC.
Per accedere ad un componente
dichiarato INSTANCE si usa il selettore
->
Per accedere ad un componente
dichiarato STATIC si usa il selettore
=>
I componenti di una classe
inoltre devono avere attribuito un livello di accessibilità:
- Public – sono visibili a tutti
- Protected – sono visibili solo dalla classe e dalle sue sottoclassi
- Private – sono visibili solo all’interno della loro classe.
CLASS
<nomeclasse> DEFINITION.
PUBLIC
SECTION.
[Attributi;
Metodi; Eventi]
……………
PROTECTED
SECTION.
[Attributi;
Metodi; Eventi]
……………
PRIVATE
SECTION.
[Attributi;
Metodi; Eventi]
……………
ENDCLASS.
Implementazione:
Nell’implementazione della classe
devono essere descritti i comportamenti e le azioni di tutti i metodi della
classe.
CLASS
<nomeclasse> IMPLEMENTATION.
……………
ENDCLASS.
ESEMPIO DI UNA CLASSE LOCALE
CLASS lcl_clienti DEFINITION.
PUBLIC SECTION.
TYPES:
BEGIN OF Ty_clienti,
Kunnr
TYPE I,
Name
TYPE string,
END
OF Ty_clienti.
METHODS:
constructor IMPORTING p_kunnr TYPE I p_name TYPE string,
Display_clienti.
CLASS-METHODS:
display_num_clienti.
PROTECTED SECTION.
CLASS-DATA:
num_clienti TYPE i.
PRIVATE SECTION.
DATA:
s_clienti TYPE ty_clienti.
ENDCLASS.
OGGETTI E METODI
I metodi possono essere di due
tipi:
- STANDARD: METHODS: nome_metodo
- EVENTO: METHODS: nome_metodo FOR EVENT evento OF classe.
Un metodo può avere varie
estensioni:
- IMPORTING: parametri di input
- EXPORTING: parametri di output
- RETURNING VALUE(P): indica un valore di ritorno
- CHANGING: parametri che modificano il loro valore
- EXCEPTIONS: ritorna il valore di un’eccezione
- ABSTRACT: indica un metodo astratto
- FINAL: indica che non può essere esteso
- REDEFINITION: indica un metodo che è stato ridefinito
Metodo
Constructor:
Ogni classe ha un metodo
costruttore predefinito che è PUBLIC ed INSTANCE. Esso definisce lo stato
iniziale di un oggetto, e viene eseguito in automatico ogni volta che una
classe viene istanziata.
E’ possibile ridefinire un metodo
costruttore all’interno di una propria classe
Se si vuole definire un metodo instance, questo dovrà chiamarsi: CONSTRUCTOR
Se si vuole definire un metodo static questo dovrà chiamarsi: CLASS_CONSTRUCTOR
Il metodo costruttore viene
richiamato in automatico dall’istruzione:
CREATE OBJECT e no può
essere richiamato con l’istruzione CALL METHOD.
Ridefinire il metodo costruttore
è necessario quando si deve inizializzare un oggetto con valori dinamici.
Un metodo costruttore non ha
parametri di EXPORTING.
REFERENZIARE
UN OGGETTO:
Un oggetto per poter essere
creato deve essere referenziato ad una classe, e questo avviene per mezzo
dell’istruzione:
DATA:
oggetto TYPE REF TO classe.
Una volta referenziato un
oggetto, lo si deve creare:
CREATE OBJECT
oggetto.
Ed infine lo si può utilizzare
usando la seguente istruzione
CALL METHOD
oggetto->metodo.
AUTO
REFERENZIAZIONE DI UN OGGETTO:
Se un oggetto ha bisogno di fare
riferimento a se stesso, si usa l’auto referenziazione, quindi per fare ciò si
usa la variabile di referenziazione ME.
Esempio:
DATA: oggetto
TYPE REF TO classe.
CREATE OBJECT
oggetto.
CALL METHOD
me->metodo.
ISTANZE
MULTIPLE DI UN OGGETTO:
DATA: oggetto1
TYPE REF TO classe.
DATA: oggetto2
TYPE REF TO classe.
Le tabelle di puntamento possono
essere usate per storicizzare istanze/oggetti
multipli di una classe, anziché definire ogni oggetto singolarmente.
Esempio:
DATA: oggetto
TYPE REF TO classe.
DATA: tab_oggetto TYPE TABLE OF REF TO classe.
CANCELLAZIONE
DI UN OGGETTO:
Per cancellare un oggetto
istanziato, si usa l’istruzione:
CLEAR oggetto.
Questa istruzione inizializza il
contenuto di OGGETTO con l’effetto di cancellare l’oggetto.
UTILIZZO
DEI METODI COME FUNZIONI
Oltre che con l’istruzione CALL
METHOD, un metodo può essere richiamato all’interno di una funzione:
- Possono essere utilizzati come funzioni sia metodi STATIC:
risultato = classe=>metodo(parametri)
- Che INSTANCE:
risultato = oggetto->metodo(parametri)
CHIAMATE
DINAMICHE A OGGETTI E METODI
Oggetti e metodi possono essere
richiamati dinamicamente:
- oggetto->(metodo)
- me->(metodo)
- classe=>(metodo)
- (classe)=>metodo
- (classe)=>(metodo)
Anche i parametri di un metodo
possono essere passati in modo dinamico:
- CALLMETHOD oggetto->metodo
PARAMETER-TABLE
tabella_parametri
EXCEPTION-TABLE
tabella_eccezioni
Le due tabelle: tabella_parametri e
tabella_eccezioni, devono essere dichiarate come:
- TYPE TABLE OF ABAP_PARMBIND_TAB
EBOOK: le mie guide sono visualizzabili cliccando sui link:
1. SAP EWM (Extended Warehouse Management)
3. SAP VIM (Vendor Invoice Management)
1. SAP EWM (Extended Warehouse Management)
3. SAP VIM (Vendor Invoice Management)
SE MI CONTATTATE IN PRIVATO, PAGATE LA META' DEL PREZZO DI AMAZON, E POTETE SCEGLIERE IL FORMATO WORD o PDF.
>>> RECENSIONI DEI LIBRI su Amazon Kindle <<<
Ebook: SAP CDS: https://www.amazon.it/dp/B0B9BD1RN3#customerReviews
Ebook: SAP MM: https://www.amazon.it/dp/B0C3MKD9BR#customerReviews
Ebook: SAP MII: https://www.amazon.it/dp/B0C4392MY9#customerReviews
Ebook: SAP VIM: https://www.amazon.it/dp/B0C6FBK8QN#customerReviews
Ebook: SAP MM: https://www.amazon.it/dp/B0C3MKD9BR#customerReviews
Ebook: SAP MII: https://www.amazon.it/dp/B0C4392MY9#customerReviews
Ebook: SAP VIM: https://www.amazon.it/dp/B0C6FBK8QN#customerReviews
Ebook: SAP EWM: https://www.amazon.it/dp/B0CL6TXP1V#customerReviews
Nessun commento:
Posta un commento