SlideShare a Scribd company logo
1 of 32
ABAP OBJECTS
Quarta parte
2
Agenda del corso
• Dai function module agli oggetti
• Definizione di una classe
• Oggetti e metodi
• Incapsulamento, ereditarietà, polimorfismo
• Interfacce
• Eventi
3
Agenda del corso
• Dai function module agli oggetti
• Definizione di una classe
• Oggetti e metodi
• Incapsulamento, ereditarietà, polimorfismo
• Interfacce
• Eventi
Interfacce
• L’ABAP come il Java non permette l’ereditarietà
multipla
• Con l’utilizzo delle interfacce è possibile in parte
aggirare questo limite
4
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
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
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
Interfacce
• In ogni classe si possono implementare una o più
interfacce
• Più classi possono implementare la stessa
interfaccia
8
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
Interfacce
• Un interfaccia può contenere a sua volta un’altra
interfaccia
INTERFACE <nome_interfaccia1>.
...
ENDINTERFACE.
INTERFACE <nome_interfaccia2>.
...
INTERFACES <nome_interfaccia1>.
ENDINTERFACE.
10
Interfacce
• Quando una classe usa un interfaccia che ne
contiene un’altra deve implementare ogni metodo
di ognuna delle due interfacce definite
11
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
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
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
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
Interfacce
• Un interfaccia utilizzata in una superclasse viene
ereditata dalla sottoclasse e questa può
implementarne i metodi in modo differente
16
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Eventi
31
ESSENTIA.COM srl
Via Druento, 290 - 10078 Venaria Reale (TO)
Tel.: 011 – 4560.511 fax: 011 – 4560.577
Via Nizza, 56 – 00198 Roma
Tel.: 06 – 85305570 fax: 06 – 85800504
Mail: inforoma@e-ssentia.it
Web: www.e-ssentia.com
Powerd by
Bossù Piergiorgio

More Related Content

What's hot

What's hot (20)

Programacion orientada
Programacion orientadaProgramacion orientada
Programacion orientada
 
Java threading
Java threadingJava threading
Java threading
 
Oops concept on c#
Oops concept on c#Oops concept on c#
Oops concept on c#
 
Friend functions
Friend functions Friend functions
Friend functions
 
Inheritance in c++
Inheritance in c++Inheritance in c++
Inheritance in c++
 
Classes and Objects in C#
Classes and Objects in C#Classes and Objects in C#
Classes and Objects in C#
 
This keyword in java
This keyword in javaThis keyword in java
This keyword in java
 
Java packages
Java packagesJava packages
Java packages
 
Basic concepts of oops
Basic concepts of oopsBasic concepts of oops
Basic concepts of oops
 
Object-Oriented Programming Concepts
Object-Oriented Programming ConceptsObject-Oriented Programming Concepts
Object-Oriented Programming Concepts
 
Java OOPS Concept
Java OOPS ConceptJava OOPS Concept
Java OOPS Concept
 
Constants, Variables and Data Types in Java
Constants, Variables and Data Types in JavaConstants, Variables and Data Types in Java
Constants, Variables and Data Types in Java
 
Classes, objects in JAVA
Classes, objects in JAVAClasses, objects in JAVA
Classes, objects in JAVA
 
Python - object oriented
Python - object orientedPython - object oriented
Python - object oriented
 
Lect 1-class and object
Lect 1-class and objectLect 1-class and object
Lect 1-class and object
 
Chapter 06 constructors and destructors
Chapter 06 constructors and destructorsChapter 06 constructors and destructors
Chapter 06 constructors and destructors
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
Object oriented programming (oop) cs304 power point slides lecture 01
Object oriented programming (oop)   cs304 power point slides lecture 01Object oriented programming (oop)   cs304 power point slides lecture 01
Object oriented programming (oop) cs304 power point slides lecture 01
 
Chapter 05 classes and objects
Chapter 05 classes and objectsChapter 05 classes and objects
Chapter 05 classes and objects
 
Java class,object,method introduction
Java class,object,method introductionJava class,object,method introduction
Java class,object,method introduction
 

Viewers also liked

Agile introduction for dummies
Agile introduction for dummiesAgile introduction for dummies
Agile introduction for dummiesVinay Dixit
 
Sap script made easy
Sap script made easySap script made easy
Sap script made easyKranthi Kumar
 
SAP SD Study material
SAP SD Study material SAP SD Study material
SAP SD Study material Harsha Halyal
 
Muerte por powerpoint y como diseñar presentaciones efectivas
Muerte por powerpoint  y como diseñar presentaciones efectivasMuerte por powerpoint  y como diseñar presentaciones efectivas
Muerte por powerpoint y como diseñar presentaciones efectivasdaniel silverman
 

Viewers also liked (9)

Web dynpro for abap 01
Web dynpro for abap 01Web dynpro for abap 01
Web dynpro for abap 01
 
Web dynpro for abap 02
Web dynpro for abap 02Web dynpro for abap 02
Web dynpro for abap 02
 
Web dynpro for abap 03
Web dynpro for abap 03Web dynpro for abap 03
Web dynpro for abap 03
 
Agile introduction for dummies
Agile introduction for dummiesAgile introduction for dummies
Agile introduction for dummies
 
Sapscript
SapscriptSapscript
Sapscript
 
sap script overview
sap script overviewsap script overview
sap script overview
 
Sap script made easy
Sap script made easySap script made easy
Sap script made easy
 
SAP SD Study material
SAP SD Study material SAP SD Study material
SAP SD Study material
 
Muerte por powerpoint y como diseñar presentaciones efectivas
Muerte por powerpoint  y como diseñar presentaciones efectivasMuerte por powerpoint  y como diseñar presentaciones efectivas
Muerte por powerpoint y como diseñar presentaciones efectivas
 

Similar to Corso ABAP OO 04

Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...Giuseppe Cramarossa
 
Lezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliLezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliAndrea Della Corte
 
Programmaoggetti[1]
Programmaoggetti[1]Programmaoggetti[1]
Programmaoggetti[1]Anna_1969
 
Lezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliLezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliAndrea Della Corte
 
Lezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliLezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliAndrea Della Corte
 

Similar to Corso ABAP OO 04 (7)

Corso Java 1 - BASE
Corso Java 1 - BASECorso Java 1 - BASE
Corso Java 1 - BASE
 
Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
 
OOP with C#
OOP with C#OOP with C#
OOP with C#
 
Lezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliLezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern Creazionali
 
Programmaoggetti[1]
Programmaoggetti[1]Programmaoggetti[1]
Programmaoggetti[1]
 
Lezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliLezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern Strutturali
 
Lezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliLezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern Strutturali
 

Corso ABAP OO 04

  • 2. 2 Agenda del corso • Dai function module agli oggetti • Definizione di una classe • Oggetti e metodi • Incapsulamento, ereditarietà, polimorfismo • Interfacce • Eventi
  • 3. 3 Agenda del corso • Dai function module agli oggetti • Definizione di una classe • Oggetti e metodi • Incapsulamento, ereditarietà, polimorfismo • Interfacce • Eventi
  • 4. Interfacce • L’ABAP come il Java non permette l’ereditarietà multipla • Con l’utilizzo delle interfacce è possibile in parte aggirare questo limite 4
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. Interfacce • In ogni classe si possono implementare una o più interfacce • Più classi possono implementare la stessa interfaccia 8
  • 9. 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
  • 10. Interfacce • Un interfaccia può contenere a sua volta un’altra interfaccia INTERFACE <nome_interfaccia1>. ... ENDINTERFACE. INTERFACE <nome_interfaccia2>. ... INTERFACES <nome_interfaccia1>. ENDINTERFACE. 10
  • 11. Interfacce • Quando una classe usa un interfaccia che ne contiene un’altra deve implementare ogni metodo di ognuna delle due interfacce definite 11
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. Interfacce • Un interfaccia utilizzata in una superclasse viene ereditata dalla sottoclasse e questa può implementarne i metodi in modo differente 16
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 32. ESSENTIA.COM srl Via Druento, 290 - 10078 Venaria Reale (TO) Tel.: 011 – 4560.511 fax: 011 – 4560.577 Via Nizza, 56 – 00198 Roma Tel.: 06 – 85305570 fax: 06 – 85800504 Mail: inforoma@e-ssentia.it Web: www.e-ssentia.com Powerd by Bossù Piergiorgio