Corso ABAP OO 02
-
Upload
piergiorgio-bossu -
Category
Documents
-
view
1.868 -
download
11
description
Transcript of Corso ABAP OO 02
ABAP OBJECTSSeconda parte
2
Agenda del corso
• Dai function module agli oggett i• Definizione di una classe• Oggett i e metodi• Incapsulamento, ereditarietà, polimorf ismo• Interfacce• Eventi
3
Agenda del corso
• Dai function module agli oggett i• Definizione di una classe• Oggett i e metodi• Incapsulamento, ereditarietà, polimorf ismo• Interfacce• Eventi
Definizione di una Classe
• Oggetti e Classi sono le basi della programmazione ad oggetti
• Una Classe rappresenta l’astrazione di un Oggetto
4
Definizione di una Classe
• 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
5
Definizione di una Classe
• Partendo da una classe quindi si possono creare più oggetti tutti con gli stessi attributi, anche se con valori diversi, e con gli stessi metodi
• Due istanze della stessa classe sono distinguibili solo per il valore dei loro attributi, mentre il loro comportamento (metodo) è lo stesso
6
Definizione di una Classe
• In SAP è possibile distinguere due diversi tipi di classi:
• Classi Globali
• Classi Locali
7
Definizione di una Classe
Classi Globali
• Sono oggetti storicizzati nel repository SAP
• Sono accessibili da qualsiasi programma
• Devono avere un nome che inizia per Z o Y
8
Definizione di una Classe
Classi Locali
• Sono definite all’interno di un report ABAP
• Sono accessibili solo dal programma in cui sono definite
• Non hanno regole fisse di nomenclatura
9
Definizione di una Classe
Dichiarazione di una Classe Locale
• La dichiarazione di una classe si compone di due parti:
• Definizione
• Implementazione
10
Definizione di una Classe
• DefinizioneCLASS <nomeclasse> DEFINITION.
……. ENDCLASS.
• ImplementazioneCLASS <nomeclasse> IMPLEMENTATION.
……. ENDCLASS.
11
Definizione di una Classe
• La definizione di una classe non può essere nidificata
• Una classe non può essere definita all’interno di subroutine o di function module
• La definizione di una classe deve essere fatta nei dati globali all’inizio del programma
12
Definizione di una Classe
• Nella definizione di una classe devono essere dichiarati i componenti della classe stessa
• Attributi
• Metodi
• Eventi
13
Definizione di una Classe
• 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 la istanze della classe
14
Definizione di una Classe
• I componenti dichiarati STATIC devono essere dichiarati come CLASS-keyword
• I componenti dichiarati STATIC 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
15
Definizione di una Classe
• Per accedere ad un componente dichiarato INSTANCE si usa il selettore ->
• Per accedere ad un componente dichiarato STATIC si usa il selettore =>
16
Definizione di una Classe
• 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
17
Definizione di una Classe
Definizione di una classe.
CLASS <nomeclasse> DEFINITION.PUBLIC SECTION.
[Attributi; Metodi; Eventi] PROTECTED SECTION.
[Attributi; Metodi; Eventi] PRIVATE SECTION.
[Attributi; Metodi; Eventi] ENDCLASS.
18
Definizione di una Classe
Implementazione di una classe.
• Nell’implementazione della classe devono essere descritti i comportamenti e le azioni di tutti i metodi della classe.
• In altre parole la parte di implementazione conterrà il codice ABAP per il funzionamento dei metodi
19
Definizione di una Classe
Esercitazione:
• Proviamo ora a definire una Classe in un programma ABAP
20
Definizione di una Classe
Esercitazione: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.
21
22
Agenda del corso
• Dai function module agli oggett i• Definizione di una classe• Oggett i e metodi• Incapsulamento, ereditarietà, polimorf ismo• Interfacce• Eventi
Oggetti e Metodi
• I metodi possono essere di due tipi:
• Standard:METHODS: nome_metodo
• Evento:METHODS: nome_metodo FOR EVENT evento OF classe
23
Oggetti e Metodi
• 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
24
Oggetti e Metodi
Metodo Constructor
• Ogni classe ha un metodo costruttore predefinito che è public ed instance
• I costruttori sono metodi speciali che definiscono lo stato iniziale di un oggetto
• Il metodo costruttore viene eseguito in automatico ogni volta che una classe viene istanziata
25
Oggetti e Metodi
Metodo Constructor
• 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
26
Oggetti e Metodi
Metodo Constructor
• Il metodo costruttore viene richiamato in automatico dall’istruzione: CREATE OBJECT e non 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
27
Oggetti e Metodi
Referenziare un oggetto
• Un oggetto per poter essere creato deve essere referenziato ad una classe
• Un oggetto si referenzia per mezzo dell’istruzione:DATA: oggetto TYPE REF TO classe.
28
Oggetti e Metodi
Usare un oggetto
• Dichiarare una variabile di referenziazione:DATA: oggetto TYPE REF TO classe.
• Creare un oggetto:CREATE OBJECT oggetto.
• Usare i componenti dell’oggetto:CALL METHOD oggetto->metodo.
29
Oggetti e Metodi
Auto Referenziazione di un oggetto
• Se un oggetto ha bisogno di fare riferimento a se stesso si usa l’auto referenziazione
• Per fare riferimento all’oggetto attualmente istanziato ed attivo si usa la variabile di referenziazione ME
• ME è l’equivalente di THIS utilizzato nel C++ ed in Java
30
Oggetti e Metodi
Auto Referenziazione di un oggetto
• Esempio:DATA: oggetto TYPE REF TO classe.
CREATE OBJECT oggetto.
CALL METHOD me->metodo.
31
Oggetti e Metodi
Istanze multiple di un oggetto
• Un oggetto è un istanza di una classe
• Se si vogliono creare più istanze/oggetti di una classe si devono referenziare n variabili oggetto di quella classe
DATA: oggetto1 TYPE REF TO classe.DATA: oggetto2 TYPE REF TO classe.
32
Oggetti e Metodi
Istanze multiple di un oggetto
• Le tabelle di puntamento possono essere usate per storicizzare istanze/oggetti multiple di una classe
• Anziché definire ogni oggetto singolarmente avremo:
DATA: oggetto TYPE REF TO classe.DATA: tab_oggetto TYPE TABLE OF REF TO classe.
33
Oggetti e Metodi
Cancellare un oggetto
• Per cancellare un oggetto istanziato si usa l’istruzione:
CLEAR oggetto.
• L’istruzione CLEAR inizializza il contenuto di oggetto con l’effetto di cancellare l’oggetto
34
Oggetti e Metodi
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)
35
Oggetti e Metodi
Utilizzo dei metodi come funzioni
• Un metodo può essere utilizzato come funzione nei seguenti casi:
• Come sorgente dati in un istruzione MOVE• Come operatore all’interno di espressioni logiche• Come operatore in istruzioni CASE … WHEN• Come operatore in condizioni WHERE di un LOOP
36
Oggetti e Metodi
Chiamate dinamiche a oggetti e metodi
• Oggetti e metodi possono essere richiamati dinamicamente:
oggetto->(metodo)me->(metodo)classe=>(metodo)(classe)=>metodo(classe)=>(metodo)
37
Oggetti e Metodi
Chiamate dinamiche a oggetti e metodi
• Anche i parametri di un metodo possono essere passati in modo dinamico:
CALL METHOD oggetto->metodoPARAMETER-TABLE tabella_parametriEXCEPTION-TABLE tabella_eccezioni
• La tabella_parametri e quella _eccezioni devono essere dichiarate come:
TYPE TABLE OF ABAP_PARMBIND_TAB
38
ESSENTIA.COM srl
Via Druento, 290 - 10078 Venaria Reale (TO)Tel.: 011 – 4560.511 fax: 011 – 4560.577
Via Nizza, 56 – 00198 RomaTel.: 06 – 85305570 fax: 06 – 85800504
Mail: [email protected]: www.e-ssentia.com
Powerd by Bossù Piergiorgio