Corso ABAP OO 04

32
ABAP OBJECTS Quarta parte

description

Quarta ed ultima parte di un corso sulla programmazione ABAP ad Oggetti tenuto da me

Transcript of Corso ABAP OO 04

Page 1: Corso ABAP OO  04

ABAP OBJECTSQuarta parte

Page 2: Corso ABAP OO  04

2

Agenda del corso

• Dai function module agli oggetti• Definizione di una classe• Oggetti e metodi• Incapsulamento, ereditarietà,

polimorfismo• Interfacce• Eventi

Page 3: Corso ABAP OO  04

3

Agenda del corso

• Dai function module agli oggetti• Definizione di una classe• Oggetti e metodi• Incapsulamento, ereditarietà,

polimorfismo• Interfacce• Eventi

Page 4: Corso ABAP OO  04

Interfacce

• L’ABAP come il Java non permette l’ereditarietà multipla

• Con l’utilizzo delle interfacce è possibile in parte aggirare questo limite

4

Page 5: Corso ABAP OO  04

Interfacce

• Le interfacce sono simili alle classi astratte ma hanno solo la parte della definizione

• Le interfacce sono definite come strutture indipendenti

INTERFACE <nome_interfaccia>.…

ENDINTERFACE.

5

Page 6: Corso ABAP OO  04

Interfacce

• Un interfaccia può contenere sia componenti instance che static.

• All’interno di un interfaccia tutti i componenti sono automaticamente public e non si deve definire esplicitamente la sezione

6

Page 7: Corso ABAP OO  04

Interfacce

• In un interfaccia è possibile definire i metodi ma non la loro implementazione

• Similmente a come una sottoclasse implementa i metodi di una classe astratta, cosi tutte le classi che usano l’interfaccia devono implementarne i metodi

7

Page 8: Corso ABAP OO  04

Interfacce

• In ogni classe si possono implementare una o più interfacce

• Più classi possono implementare la stessa interfaccia

8

Page 9: Corso ABAP OO  04

Interfacce

• Un interfaccia deve essere dichiarata nella sezione public della classe che vuole usarla

INTERFACES <nome_interfaccia>

• In questo modo tutti i componenti dell’interfaccia vengono aggiunti alla classe

• Le classi che usano l’interfaccia devono implementare tutti i metodi in essa definiti

METHOD nome_interfaccia~metodo

9

Page 10: Corso ABAP OO  04

Interfacce

• Un interfaccia può contenere a sua volta un’altra interfaccia

INTERFACE <nome_interfaccia1>....

ENDINTERFACE.INTERFACE <nome_interfaccia2>.

...INTERFACES <nome_interfaccia1>.

ENDINTERFACE.

10

Page 11: Corso ABAP OO  04

Interfacce

• Quando una classe usa un interfaccia che ne contiene un’altra deve implementare ogni metodo di ognuna delle due interfacce definite

11

Page 12: Corso ABAP OO  04

Interfacce

• Il nome completo di un metodo di un interfaccia all’interno di una classe o di un’altra interfaccia è:

nome_interfaccia~nome_metodo

• Al fine di semplificare l’accesso ai moduli è possibile definire degli alias

ALIASES metodo FOR nome_interfaccia~nome_metodo

12

Page 13: Corso ABAP OO  04

Interfacce

• Gli alias permettono di accedere ad un metodo di un interfaccia in modo diretto

CALL METHOD oggetto->metodo

• All’interno dell’implementazione della classe tuttavia i metodi devono sempre essere richiamati con il nome completo

13

Page 14: Corso ABAP OO  04

Interfacce

• Come per le classi anche le interfacce possono essere usate per referenziare un oggetto

• E’ possibile eseguire il narrow cast anche attraverso un interfaccia

14

Page 15: Corso ABAP OO  04

Interfacce

• Le interfacce permetto di usare differenti classi con lo stesso riferimento

• Differenti classi possono implementare i metodi di un interfaccia in maniera differente fra loro

15

Page 16: Corso ABAP OO  04

Interfacce

• Un interfaccia utilizzata in una superclasse viene ereditata dalla sottoclasse e questa può implementarne i metodi in modo differente

16

Page 17: Corso ABAP OO  04

Eventi

• Gli eventi servono a gestire gli stati di un oggetto/classe e le loro variazioni in seguito a determinate condizioni

• Un evento può essere static e quindi riferito in modo generico alla classe o instance e quindi proprio dell’oggetto

17

Page 18: Corso ABAP OO  04

Eventi

• Un evento può essere dichiarato come public, protected o private

• Gli eventi possono anche essere definiti all’interno di un interfaccia ed in questo caso saranno obbligatoriamente public

18

Page 19: Corso ABAP OO  04

Eventi

• Una classe può definire un metodo per generare un evento

• La stessa classe o un’altra classe può definire un altro metodo per gestire l’evento

19

Page 20: Corso ABAP OO  04

Eventi

• Un evento deve essere definito nella sezione DEFINITION della casse

EVENTS <nome_evento>.

• Un evento può avere solo parametri di EXPORTING e non deve essere implementato nella sezione di IMPLEMENTATION

20

Page 21: Corso ABAP OO  04

Eventi

• Un evento può essere generato da qualsiasi metodo all’interno della classe con l’istruzione

RAISE EVENT <nome_evento>.

• Una volta generato l’evento questo deve essere gestito per mezzo di un altro metodo

21

Page 22: Corso ABAP OO  04

Eventi

• Qualsiasi classe può definire un metodo per gestire un evento sia che questo sia stato generato dalla stessa classe che da un’altra

• Un evento può avere diversi metodi di gestione a lui associati

22

Page 23: Corso ABAP OO  04

Eventi

• I metodi che gestiscono un evento devono essere definiti come:

METHODS: <nome_metodo> FOR EVENT <nome_evento> OF CLASS <nome_classe>

O:METHODS: <nome_metodo> FOR EVENT

<nome_evento> OF INTERFACE <nome_interfaccia>

23

Page 24: Corso ABAP OO  04

Eventi

• I metodi per la gestione dell’evento hanno solo parametri di IMPORTING

• I parametri che sono dichiarati con l’evento vengono passati al metodo di gestione dell’evento

• Tuttavia ogni metodo di gestione può decidere quali parametri passati dall’evento utilizzare

24

Page 25: Corso ABAP OO  04

Eventi

• I metodi che gestiscono un evento non possono essere richiamati con una CALL METHOD

• Essi vengono richiamati in automatico quando l’evento associato viene generato

25

Page 26: Corso ABAP OO  04

Eventi

• Dopo che un evento è stato generato tutti i metodi di gestione dichiarati vengono eseguiti prima che si passi all’istruzione successiva

• La sequenza con cui i metodi di gestione vengono eseguiti è la stessa in cui sono stati dichiarati

26

Page 27: Corso ABAP OO  04

Eventi

• Il processo di registrazione è dinamico cioè viene istituito il collegamento in fase di runtime

• Per dichiarare il gestore di un evento si usa l’istruzione:

SET HANDLER oggetto->meth_gest_evento FOR oggetto.

27

Page 28: Corso ABAP OO  04

Eventi

• I metodi per la gestione di un evento possono di volta in volta essere “attivati” o “disattivati”

• Per attivare o disattivare un metodo di gestione si utilizza l’attributo ACTIVATION dell’istruzione SET HANDLER

28

Page 29: Corso ABAP OO  04

Eventi

SET HANDLER oggetto->meth_gest_evevento FOR oggetto ACTIVATION = ‘X’.

• Attiva un metodo

SET HANDLER oggetto->meth_gest_evevento FOR oggetto ACTIVATION = ‘ ’.

• Disattiva un metodo

29

Page 30: Corso ABAP OO  04

Eventi

• A runtime viene definita una struttura invisibile che accoglierà la lista dei metodi di gestione degli eventi e la loro sequenza di esecuzione

• Un metodo per la gestione di un evento può a sua volta generare un altro evento

30

Page 31: Corso ABAP OO  04

Eventi

31

Page 32: Corso ABAP OO  04

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