SlideShare uma empresa Scribd logo
1 de 39
ABAP OBJECTS
   Seconda parte
Agenda del corso

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



                                          2
Agenda del corso

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



                                          3
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



• Definizione
    CLASS <nomeclasse> DEFINITION.
           …….
    ENDCLASS.

• Implementazione
    CLASS <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
Agenda del corso

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



                                          22
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->metodo
          PARAMETER-TABLE tabella_parametri
          EXCEPTION-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 Roma
Tel.: 06 – 85305570    fax: 06 – 85800504

Mail:   inforoma@e-ssentia.it
Web:    www.e-ssentia.com




                                     Powerd by
                                Bossù Piergiorgio

Mais conteúdo relacionado

Mais procurados (20)

Object oriented programming in java
Object oriented programming in javaObject oriented programming in java
Object oriented programming in java
 
Data abstraction and object orientation
Data abstraction and object orientationData abstraction and object orientation
Data abstraction and object orientation
 
Java generics(Under The Hood Of The Compiler) by Harmeet singh
Java generics(Under The Hood Of The Compiler) by Harmeet singhJava generics(Under The Hood Of The Compiler) by Harmeet singh
Java generics(Under The Hood Of The Compiler) by Harmeet singh
 
Object Oriented Programming Principles
Object Oriented Programming PrinciplesObject Oriented Programming Principles
Object Oriented Programming Principles
 
OOP with C#
OOP with C#OOP with C#
OOP with C#
 
Object oriented concepts
Object oriented conceptsObject oriented concepts
Object oriented concepts
 
Oops concept on c#
Oops concept on c#Oops concept on c#
Oops concept on c#
 
L11 array list
L11 array listL11 array list
L11 array list
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herencia
 
Oracle Forms : Multiple Forms
Oracle Forms : Multiple FormsOracle Forms : Multiple Forms
Oracle Forms : Multiple Forms
 
Oop
OopOop
Oop
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
Java arrays
Java arraysJava arrays
Java arrays
 
Object Oriented Programming Concepts
Object Oriented Programming ConceptsObject Oriented Programming Concepts
Object Oriented Programming Concepts
 
OOP Basics
OOP BasicsOOP Basics
OOP Basics
 
Basic oop concepts - C++
Basic oop concepts - C++Basic oop concepts - C++
Basic oop concepts - C++
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
C++ classes tutorials
C++ classes tutorialsC++ classes tutorials
C++ classes tutorials
 
[OOP - Lec 01] Introduction to OOP
[OOP - Lec 01] Introduction to OOP[OOP - Lec 01] Introduction to OOP
[OOP - Lec 01] Introduction to OOP
 
oracle-reports6i
oracle-reports6ioracle-reports6i
oracle-reports6i
 

Destaque

SAP Business One 9.0 B1A & B1H overview per Clienti - Luglio 2013
SAP Business One 9.0 B1A & B1H  overview per Clienti - Luglio 2013SAP Business One 9.0 B1A & B1H  overview per Clienti - Luglio 2013
SAP Business One 9.0 B1A & B1H overview per Clienti - Luglio 2013Massimo Sala
 
Derga sap invoice management
Derga sap invoice managementDerga sap invoice management
Derga sap invoice managementDerga Consulting
 
Sap script made easy
Sap script made easySap script made easy
Sap script made easyKranthi Kumar
 

Destaque (9)

List of sap modules
List of sap modulesList of sap modules
List of sap modules
 
Web dynpro for abap 03
Web dynpro for abap 03Web dynpro for abap 03
Web dynpro for abap 03
 
Web dynpro for abap 02
Web dynpro for abap 02Web dynpro for abap 02
Web dynpro for abap 02
 
Web dynpro for abap 01
Web dynpro for abap 01Web dynpro for abap 01
Web dynpro for abap 01
 
SAP Business One 9.0 B1A & B1H overview per Clienti - Luglio 2013
SAP Business One 9.0 B1A & B1H  overview per Clienti - Luglio 2013SAP Business One 9.0 B1A & B1H  overview per Clienti - Luglio 2013
SAP Business One 9.0 B1A & B1H overview per Clienti - Luglio 2013
 
Derga sap invoice management
Derga sap invoice managementDerga sap invoice management
Derga sap invoice management
 
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
 

Semelhante a Corso ABAP OO 02

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
 
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwpCorso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwpGiuseppe Cramarossa
 
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseFelice Pescatore
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereMatteo Valoriani
 
Lezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliLezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliAndrea Della Corte
 
Java SE 5. Capitolo 01: Base
 Java SE 5. Capitolo 01: Base Java SE 5. Capitolo 01: Base
Java SE 5. Capitolo 01: Basebobpuley
 
Lezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliLezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliAndrea Della Corte
 

Semelhante a Corso ABAP OO 02 (13)

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...
 
Java - Lezione 1
Java - Lezione 1 Java - Lezione 1
Java - Lezione 1
 
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwpCorso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
 
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione Base
 
Programmazione in Java Lezione 1
Programmazione in Java Lezione 1Programmazione in Java Lezione 1
Programmazione in Java Lezione 1
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
 
Lezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliLezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern Creazionali
 
Java SE 5. Capitolo 01: Base
 Java SE 5. Capitolo 01: Base Java SE 5. Capitolo 01: Base
Java SE 5. Capitolo 01: Base
 
Eclipse and Java
Eclipse and JavaEclipse and Java
Eclipse and Java
 
Linguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e OggettiLinguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e Oggetti
 
iOS_Course_6
iOS_Course_6iOS_Course_6
iOS_Course_6
 
Corso Java 1 - BASE
Corso Java 1 - BASECorso Java 1 - BASE
Corso Java 1 - BASE
 
Lezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliLezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern Strutturali
 

Corso ABAP OO 02

  • 1. ABAP OBJECTS Seconda parte
  • 2. Agenda del corso • Dai function module agli oggetti • Definizione di una classe • Oggetti e metodi • Incapsulamento, ereditarietà, polimorfismo • Interfacce • Eventi 2
  • 3. Agenda del corso • Dai function module agli oggetti • Definizione di una classe • Oggetti e metodi • Incapsulamento, ereditarietà, polimorfismo • Interfacce • Eventi 3
  • 4. Definizione di una Classe • Oggetti e Classi sono le basi della programmazione ad oggetti • Una Classe rappresenta l’astrazione di un Oggetto 4
  • 5. 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
  • 6. 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
  • 7. Definizione di una Classe • In SAP è possibile distinguere due diversi tipi di classi: • Classi Globali • Classi Locali 7
  • 8. 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
  • 9. 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
  • 10. Definizione di una Classe Dichiarazione di una Classe Locale • La dichiarazione di una classe si compone di due parti: • Definizione • Implementazione 10
  • 11. Definizione di una Classe • Definizione CLASS <nomeclasse> DEFINITION. ……. ENDCLASS. • Implementazione CLASS <nomeclasse> IMPLEMENTATION. ……. ENDCLASS. 11
  • 12. 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
  • 13. Definizione di una Classe • Nella definizione di una classe devono essere dichiarati i componenti della classe stessa • Attributi • Metodi • Eventi 13
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. Definizione di una Classe Esercitazione: • Proviamo ora a definire una Classe in un programma ABAP 20
  • 21. 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 oggetti • Definizione di una classe • Oggetti e metodi • Incapsulamento, ereditarietà, polimorfismo • Interfacce • Eventi 22
  • 23. Oggetti e Metodi • I metodi possono essere di due tipi: • Standard: METHODS: nome_metodo • Evento: METHODS: nome_metodo FOR EVENT evento OF classe 23
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. Oggetti e Metodi Auto Referenziazione di un oggetto • Esempio: DATA: oggetto TYPE REF TO classe. CREATE OBJECT oggetto. CALL METHOD me->metodo. 31
  • 32. 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
  • 33. 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
  • 34. 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
  • 35. 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
  • 36. 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
  • 37. 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
  • 38. Oggetti e Metodi Chiamate dinamiche a oggetti e metodi • Anche i parametri di un metodo possono essere passati in modo dinamico: CALL METHOD oggetto->metodo PARAMETER-TABLE tabella_parametri EXCEPTION-TABLE tabella_eccezioni • La tabella_parametri e quella _eccezioni devono essere dichiarate come: TYPE TABLE OF ABAP_PARMBIND_TAB 38
  • 39. 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