Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido
1.
2.
3.
4.
5.
6.
Introduccin
Anlisis y Diseo
Principios
Generalizacin / Especializacin
Eventos
Casos Prcticos
Objetivos
Comprender los siguientes principios:
Clases
Herencia
Interfaces
Polimorfismo
Eventos
1. Introduccin
Programacin procedural
Programacin Orientada a Objetos
1. Introduccin
Programacin Procedural
Programacin Procedural:
Las funciones se definen independientemente de las
estructuras de datos
Se accede de forma directa a los datos
1. Introduccin
Programacin Orientada a Objetos
Qu son los objetos?
Son una abstraccin del mundo real
Unidades compuestas de datos y funciones
pertenecientes a dichos datos
AAvin
Method
Data
Method
1. Introduccin
Modelo de programacin OO
Clases
Data
lcl_Avin
Nombre
Plazas
Subir_pasajeros
Despegar
Objetos
Reflejo de la vida real
Instancias especificas de una
clase. Ejemplo: Boing 727
Method
Data
Method
1. Introduccin
Ventajas de la OOP (I)
Consistencia durante el proceso de desarrollo:
El lenguaje utilizado durante el proceso de desarrollo es
uniforme, lo ideal sera que las modificaciones realizadas
durante la fase de implementacin se reflejarn directamente
en el diseo
Encapsulacin
La implementacin de un objeto es oculta para los dems
objetos del sistema,as que no se pueden hacer suposiciones
sobre el estado interno de un objeto y por lo tanto no surgen
dependencias sobre las implementaciones especificas
1. Introduccin
Ventajas de la OOP (II)
Polimorfismo:
Un objeto en diferentes clases puede tener diferentes
reacciones a un mismo mensaje
Herencia:
Define la implementacin de la relacin entre clases, en la cual
una clase (la subclase) comparte la estructura (atributos) y el
comportamiento (mtodos) definidos en una o ms clases
(superclases). Nota: En ABAP solo est permitida la herencia
simple
1. Introduccin
ABAP Objects
Extensin Compatible de ABAP
Las sentencias de ABAP objects se pueden usar en
los programas convencionales de ABAP, y viceversa
ABAP objects no es un lenguaje nuevo, ha sido
desarrollado como una extensin de ABAP
2. Anlisis y diseo
UML
Diagramas de Clases
Asociaciones
2. Anlisis y diseo
Qu es UML?
Un lenguaje de Modelado Orientado a Objetos
Unified Modeling Languaje
Un estndar Global
2. Anlisis y diseo
Diagramas de Clases
Punto de vista esttico del Modelo
Elementos
Clases
Objetos
Su estructura interna
Atributos
Mtodos
2. Anlisis y diseo
Diagrama de Clases: Ejemplo
lcl_flight
0..*
lcl_flightbooking
0..*
lcl_flightcustomer
1
1
lcl_seat
lcl_airplane
1..*
1..*
lcl_wing
lcl_cargo_airplane
lcl_passenger_airplane
2. Anlisis y diseo
Asociaciones (1)
2. Anlisis y diseo
Tipos de asociaciones
Agregacin y composicin
Smbolo de Agregacin
Agregacin
Tipos Especiales de asociaciones
Relacin completa
lcl_airplane
1..*
lcl_wing
Smbolo de Composicin
Composicin
Tipo especial de Agregacin
Depende de la Existencia para
para la relacin completa
lcl_flight
0..*
lcl_flightbooking
2. Anlisis y diseo
Tipos de Asociaciones
Especializacin y Generalizacin
cl_cargo_airplane
cl_cargo_airplane
cl_cargo_airplane
cl_cargo_airplane
Generalizacin
cl_airplane
Especializacin
cl_airplane
3. Principios
Objetos
Clases
Atributos
Mtodos
Ejercicios
3. Principios
Objetos
Qu caracteriza a un objeto?
Identidad
Status (atributos)
Comportamiento (mtodos)
Cada objeto generado a partir de una clase tiene su propia
identidad, es decir cada objeto es nico.
Esta identidad del objeto es la caracterstica que nos permite
diferenciar unos objetos de otros. Pese a que dos objetos tuvieran
idntico valor para todos sus atributos, seran distintos objetos ya
que cada objeto tiene su propio nombre. Ej: Tenemos 2 tazas de
caf idnticas.Pese a que se ven idnticas son dos objetos distintos
3. Principios
Clases
Clases: Plantillas para los objetos
CLASS <classname> DEFINITION.
Parte de definicin
Componentes de la clase como:
ENDCLASS.
CLASS <classname> IMPLEMENTATION.
atributos y mtodos.
Parte de implementacin
Contiene la implementacin
ENDCLASS.
de los mtodos.
Mtodos:
3. Principios
Clases Locales y Globales
Las clases Globales se definen en el generador de clases en el
ABAP Workbench (SE24) y todos los programas ABAP pueden
acceder a las clases globales.
ENDCLASS.
ENDCLASS..
3. Principios
Atributos
Los atributos describen la informacin que puede ser
almacenada en los objetos generados a partir de una
clase
Estos atributos pueden ser de cualquier tipo:
- Elementos de datos, estructuras, tablas internas,
- Cualquier tipo de datos ABAP (char, enteros,)
- Referencias a otros objetos
- Referencias a Interfaces
3. Principios
Atributos: Declaracin
3. Principios
Atributos: Visibilidad
CLASS lcl_airplane DEFINITION.
Atributos Pblicos
PUBLIC SECTION.
ENDCLASS.
PUBLIC SECTION.
.
PRIVATE SECTION.
Atributos privados
MEJOR
3. Principios
Atributos de la clase y del objeto
CLASS lcl_airplane DEFINITION.
PUBLIC SECTION.
PRIVATE SECTION.
DATA: weigth TYPE saplane-weigth,
name TYPE string.
CLASS-DATA: count TYPE I.
ENDCLASS.
3. Principios
Mtodos
Los mtodos son procedimientos internos de la clase
que determinan cmo se va a comportar el objeto.
Tienen acceso a todos los atributos de la clase y por
tanto pueden realizar cambios en el estado de los
atributos.
La Interface de los mtodos son sus parmetros, que
hacen posible que los mtodos puedan recibir valores
cuando son llamadas y que puedan devolver valores
cuando devuelvan el control al programa de llamada.
3. Principios
Mtodos: Definicin
3. Principios
Mtodos: Visibilidad
Mtodos Pblicos
-Se les puede llamar desde
fuera de la clase.
Mtodos privados
-No se les puede llamar desde
fuera de la propia clase.
- Se ven y se cambian desde
la propia clase.
3. Principios
Mtodos: Instance Vs. Static
CLASS lcl_airplane DEFINITION.
Mtodos del objeto (Instance methods)
Pueden utilizar tanto atributos de la
clase como propios del objeto en la
parte de implementacin del mtodo.
Se puede acceder a ellos mediante el
nombre del objeto
CLASS lcl_airplane DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: get_counter
RETURNING VALUE (re_count) TYPE
I.
PRIVATE SECTION.
DATA: name TYPE string.
CLASS-DATA: count type I.
ENDCLASS.
PUBLIC SECTION.
METHODS:
set_name
IMPORTING im_name TYPE string.
PRIVATE SECTION.
DATA: name TYPE string.
CLASS-DATA: count type I.
ENDCLASS.
Mtodos de la clase (Static methods)
Slo pueden utilizar componentes de
la clase en la parte de implementacin
del mtodo.
Se puede acceder a ellos mediante el
nombre de la clase
3. Principios
Creacin de Objetos
Para poder crear objetos, y para poder acceder a los objetos ya
existentes, es necesario la utilizacin de variables de referencia.
Lcl_airplane
Name
weigth
..
Creacin del
objeto
Name: LH Boston
Weight: 30000kg
3. Principios
Creacin de objetos y
asignaciones
Asignacin de referencias:
DATA: airplane
airplane
Name:LH_Berlin
Weigth: 0Kg
airplane
Name:LH_Berlin
Weigth: 0Kg
Airplane_tab
Name: LH_Paris
Weigth: 0Kg
3. Principios
Mtodos
Cada objeto se comporta de cierto modo. Este comportamiento
est determinado por sus mtodos. Hay 3 tipos de mtodos:
Mtodos que provocan un comportamiento y no pasan valores
Mtodos que pasan un valor
Mtodos que pasan o cambian varios valores.
Un objeto que requiere un servicio de otro objeto enva un
mensaje a otro objeto para que le proporcione el servicio. Este
mensaje llama a la operacin que se ejecutar. La
implementacin de esta operacin conocida como MTODO.
3. Principios
Llamando a mtodos
Los mtodos pblicos se pueden llamar desde fuera de la clase
de varios modos:
Mtodos de instancia (objeto) se llaman usando:
CALL METHOD <referece> -> <instance_method>
3. Principios
Llamadas a mtodos: Ejemplo
Mtodos del OBJETO:
(instance method)
TYPE ty_fuel,
3. Principios
Llamadas a mtodos: Ejemplo (II)
En ciertos casos se puede utilizar una forma abreviada para llamar al
mtodo:
CLASS lcl_airplane DEFINITION.
PUBLIC SECTION.
METHODS: est_fuel_con
IMPORTING im_distance TYPE ty_distance
RETURNING VALUE(re_fuel) TYPE ty_fuel,
CLASS-METHODS: get_count RETURNING VALUE(re_count) TYPE i.
ENDCLASS.
DATA: plane1
plane2
fuel_consuption
TYPE ty_fuel,
count_planes
TYPE i.
3. Principios
Constructores
lcl_airplane
Name
weigth
count
constructor
CREATE OBJECT
3. Principios
Constructor: definicin
3. Principios
Constructor: Ejemplo
CLASS lcl_airplane DEFINITION.
PUBLIC SECTION.
METHODS CONSTRUCTOR IMPORTING im_name TYPE string
im_weight TYPE I.
PRIVATE SECTION.
DATA: name TYPE string, weight type I.
CLASS-DATA count TYPE I.
ENDCLASS.
3. Principios
Constructores estticos
- Se establecen antes de acceder a la clase por primera vez.
- Slo se ejecutan una vez por programa.
CLASS <classname> DEFINITION.
PUBLIC SECTION.
CLASS-METHODS CLASS_CONSTRUCTOR.
ENDCLASS.
CLASS <classname> IMPLEMENTATION.
METHOD CLASS_CONTRUCTOR
ENDMETHOD.
ENDCLASS.
3. Principios
Ejercicios
Al finalizar estos ejercicios sereis capaces de:
Crear clases
Instanciar objetos
Llamar mtodos
Crear un constructor para una clase y crear un
objeto utilizando el constructor.
4. Generaliz. / Especializacin
Herencia
Cast
Polimorfismo
Interfaces
4. Generaliz. / Especializacin
Herencia
Lcl_airplane
-name
-weight
.
+ get_fuel_level ( ): ty_level
+ estimate_fuel_consuption ( ) : i
..
Lcl_passenger_airplane
-seats
-emergency_exits
.
+ get_seats ( ): i
..
Lcl_cargo_airplane
-name
-weight
.
+ get_cargo ( ): ty_cargo
..
4. Generaliz. / Especializacin
Herencia: Concepto
La HERENCIA es una relacin por la cul una clase (subclase)
hereda todas las caractersticas de otra clase (superclase).
En la subclase se pueden aadir nuevos componentes (atributos,
mtodos,) y modificar los mtodos heredados, dotndolos a
estos con su propia implementacin
La herencia se basa en el concepto de la similitud entre clases.
En el ejemplo, las similitudes entre el avin de pasajeros y el de
carga se extraen de la superclase(aviones). De este modo esos
componentes comunes solo se definen una vez(en la superclase)
y son automticamente heredados por las distintas subclases
En SAP no es posible la herencia mltiple (solo se permite un
nivel de herencia)
4. Generaliz. / Especializacin
Herencia: Definicin
4. Generaliz. / Especializacin
Superclases Subclases
Los componentes comunes solo estn presentes una
vez (en la superclase).
Los nuevos componentes declarados en la superclase estn
automticamente disponibles en las subclases
Se reduce con ello considerablemente la cantidad de cdigo
4. Generaliz. / Especializacin
Herencia y visibilidad
El concepto de herencia nos proporciona una extensin
en el concepto de visibilidad. Este nuevo concepto es
un concepto intermedio entre el concepto de publico y
privado. As se pueden definir componentes como
protegidos, lo que les permite ser visibles y poder ser
utilizados por todas las clases que sean subclases de
la clase en la que se definen.
Las subclases no pueden acceder a los componentes
privados de las superclases. Esto es una ventaja a la
hora de querer cambiar una superclase ya que esto no
afecta a las subclases
4. Generaliz. / Especializacin
Herencia y visibilidad
Componentes Pblicos
- Totalmente Visibles.
- Permiten accesos directos.
Componentes Protegidos
- Slo son visibles dentro de
sus clases y de sus
subclases.
Componentes Privados
- Slo visibles dentro de la
clase.
- No accesibles desde fuera de
la clase, incluso desde sus
subclases.
+ public
# protected
- private
4. Generaliz. / Especializacin
La Herencia y el Constructor (I)
CLASS lcl_airplane DEFINITION.
PUBLIC SECTION.
METHODS CONSTRUCTOR IMPORTING
im_name TYPE string.
ENDCLASS.
4. Generaliz. / Especializacin
La Herencia y el Constructor (II)
DATA: ref2 TYPE REF TO lcl_2,
ref3 TYPE REF TO lcl_3.
CREATE OBJECT ref2 EXPORTING im
= 100.
CREATE OBJECT ref3 EXPORTING
im_1 = 100
Lcl_1
# a1 : i
+ constructor
(im_a1:i)
Lcl_2
im_2 = 1000.
Lcl_3
# a2:: i
+ constructor
( im_a1:i, im_a2:i )
4. Generaliz. / Especializacin
Redefinicin de mtodos
Los mtodos heredados se pueden redefinir en las
subclases
Los mtodos redefinidos se deben implementar in las
subclases
En la redefinicin no se pueden cambiar los parmetros del
mtodo
Solo se pueden redefinir mtodos de instancia (pblicos y
protegidos), no los mtodos estticos.
4. Generaliz. / Especializacin
Redefinicin mtodos: Sintaxis
4. Generaliz. / Especializacin
Clases / Mtodos Finales
Clases Finales: no pueden tener subclases.
CLASS lcl_passenger_airplane DEFINITION FINAL
INHERITING FROM lcl_airplane.
..
ENDCLASS.
4. Generaliz. / Especializacin
Narrowing Cast
Las instancias de una subclase se pueden utilizar en cualquier
contexto en el que aparece la superclase
DATA: airplane1
Name:LH Berlin
Weight: 30000Kg
100 T
Main memory
airplane = cargo_airplane.
airplane1
Cargp_airplane
Name:LH Berlin
Weight: 30000Kg
100 T
Main memory
4. Generaliz. / Especializacin
Tipos estticos y dinmicos
El tipo esttico de una variable de referencia
Se establece utilizando TYPE REF TO
Permanece constante durante la ejecucin del programa
Determina qu atributos y mtodos se pueden direccionar
4. Generaliz. / Especializacin
Semntica de la herencia
Los componentes heredados se deben comportar en la
subclase exactamente igual que lo hacen en la
superclase para todos los usuarios
Los mtodos redefinidos deben mantener la misma
semntica de los componentes heredados
La herencia es solo para
generalizacin/especializacin:
Se debe evitar la herencia de cdigo
4. Generaliz. / Especializacin
Polimorfismo
Objetos de diferentes clases reaccionan de forma diferente a la
misma llamada de mtodos.Para hacer esto, las clases
implementan el mismo mtodo de diferentes formas.Esto se
puede hacer usando la herencia, redefiniendo un mtodo de la
superclase en la subclase e implementndolo de forma diferente.
Cuando una instancia recibe un mensaje para ejecutar un mtodo,
el mtodo se ejecuta si ha sido implementado en la clase a la que
pertenece la instancia.Si la clase no ha implementado el mtodo,
solo lo ha heredado y no lo ha redefinido, entonces busca hacia
arriba en el rbol de herencia hasta que encuentra la
implementacin y lo ejecuta
4. Generaliz. / Especializacin
Polimorfismo: Ejemplo
DATA: cargo_plane TYPE REF TO lcl_cargo_airplane.
passenger_plane
plane_list
Cargo_airplane
Plane_list
1
2
4
Passenger_airplane
Main memory
4. Generaliz. / Especializacin
Interfaces
Las Interfaces son puntos de contacto externos para
las clases; definen los parmetros y los mtodos a
utilizar, pero sin implementar las reglas de negocio
(slo contienen declaracin)
Es necesario implementarlas en cada una de las
clases que las referencian.
Se consigue trabajar de un mismo modo con diferentes
objetos/clases. (polimorfismo)
Aumentan el alcance de las clases en la que estn
definidas
4. Generaliz. / Especializacin
Interfaces (II)
Para una Interface se definen sus componentes del mismo modo
que se haca con las clases. Sin embargo en las Interfaces no
existe el concepto de zonas de visibilidad
Las Interfaces se encuentran implementadas en clases, donde:
El nombre de la Interface se lista en la zona de declaracin de
la clase. Esta tiene que estar definida en la parte publica de la
clase
Las operaciones definidas en la Interface se implementan
como mtodos de la clase
Los componentes de la clase estn disponibles a la clase en
el momento que se define la Interface en la clase
Los componentes de la Interface se direccionan con el operador
(~)
4. Generaliz. / Especializacin
Interfaces: Definicin
INTERFACE lif_document.
DATA: author TYPE REF TO lcl_author.
METHODS: print, display.
ENDINTERFACE.
CLASS lcl_text_document DEFINITION.
PUBLIC SECTION.
INTERFACES lif_document.
METHODS: display.
ENDCLASS.
CLASS lcl_text_document IMPLEMENTATION.
METHOD lif_document~print.
ENDMETHOD.
METHOD lif_document~display.
ENDMETHOD.
METHOD display. ENDMETHOD.
ENDCLASS.
4. Generaliz. / Especializacin
Interfaces: Business Add Ins
Las Business Add Ins son Interfaces que proporciona SAP para que se
implementen las clases que utilicen esas interfaces. La idea es que funcionen
como las user-exits, la nica diferencia es que ahora en lugar de codificar cdigo
ABAP tradicional hay que implementar todo en una clase que contenga la
implementacin de dicha interface
4. Generaliz. / Especializacin
Interfaces vs Herencia
Polimorfismo y herencia:
Solo se puede utilizar entre objetos de clases que estn
conectadas por una jerarqua de herencia
Polimorfismo y Interfaces:
Se pueden utilizar con objetos de cualquier clase, siempre que
esas clases tienen implementados los correspondientes
Interfaces
4. Generaliz. / Especializacin
Ejercicios
Al finalizar estos ejercicios sereis capaces de:
Definir subclases
Redefinir mtodos de la superclase en la
subclase
Implementar llamadas a mtodos
Definir e implementar Interfaces
5. Eventos
Disparar y manejar eventos
Coordinacin en el manejo de eventos
Activacin/Desactivacin de los mtodos que
manejan los eventos.
Visibilidad de los eventos.
5. Eventos
Caractersticas y uso
LH
Berlin
Air-traffic
controller
ATC
IF altitude = 0.
Passenger
Miller
5. Eventos
Disparar y manejar eventos (I)
En ABAP Objects hay ciertos mtodos que se conocen como disparadores (triggers) y
otros que se conocen como manejadores (handlers). Los triggers son los mtodos que
disparan un evento, mientras que los handlers son los mtodos que se ejecutan cuando
ocurre un evento
Para disparar un evento una clase tiene que:
Declarar el evento en la parte declarativa: Los eventos se declaran en la parte
declarativa de una clase o en una interface.
Disparar el evento en uno de sus mtodos. Un evento dependiente de instancia en
una clase puede ser disparado por cualquier mtodo en la clase.Los eventos
estticos son disparados por mtodos estticos
Los eventos se usan para ejecutar una serie de mtodos. Estos mtodos tienen que:
estar definidos como eventos manejadores (handler) de ese evento. Una clase
puede contener mtodos manejadores de eventos para eventos tanto de su propia
clase como de otras clases.
estar registrados en tiempo de ejecucin para el evento.
5. Eventos
Disparar y manejar eventos (II)
Declaracin de mtodos manejadores de eventos
Una clase puede contener mtodos manejadores de eventos para eventos tanto de su
propia clase como de otras clases
La interface de un mtodo manejador de eventos slo puede contener parmetros
formales definidos en la declaracin del evento. Los atributos de los parmetros tambin
son adoptados por el evento. El mtodo manejador de eventos no tiene por que usar
todos los parmetros pasados en la sentencia RAISE EVENT
Registro de mtodos manejadores de eventos
Para permitir a un mtodo manejador de eventos reaccionar a un evento, se tiene que
determinar en tiempo de ejecucin el disparador al cual va a reaccionar. Se definir
mediante la sentencia SET HANDLER
Hay cuatro tipos diferentes de eventos:
Eventos dependientes de instancia declarados en una clase
Eventos dependientes de instancia declarados en una interface
Eventos estticos declarados en una clase
Eventos estticos declarados en una interface
5. Eventos
Definicin
5. Eventos
Gestin: puntos clave
5. Eventos
Gestin: mtodos
CLASS <class_habdle> DEFINITION.
METHODS: <on_event> FOR EVENT <event>
OF <classname>/<interface>
IMPORTING <ex_par1> <ex_parN> SENDER.
Schmidt
on_touched_dow
n
5. Eventos
Gestin: activacin
CLASS lcl_air_traffic_controller DEFINITION.
PUBLIC SECTION.
METHODS: add_airplane IMPORTING im_plane TYPE REF TO lcl_airplane.
PRIVATE SECTION.
METHODS: on_touched_down FOR EVENT touched_down OF ...
ENDCLASS.
CLASS lcl_air_traffic_controller IMPLEMENTATION.
METHOD add_airplane.
SET HANDLER on_touched_down FOR im_plane ACTIVATION X
ENDMETHOD.
METHOD
Air-traffic
controller
Airplane
ENDCLASS.
LH
Berlin
SET
HANDLER
Schmidt
on_touched_dow
n
5. Eventos
Gestin: desactivacin
CLASS lcl_air_traffic_controller DEFINITION.
PUBLIC SECTION.
METHODS: add_airplane IMPORTING im_plane TYPE REF TO lcl_airplane.
PRIVATE SECTION.
METHODS: on_touched_down FOR EVENT touched_down OF lcl_airplane
IMPORTING ex_name SENDER.
ENDCLASS.
CLASS lcl_air_traffic_controller IMPLEMENTATION.
METHOD on_touched_down.
SET HANDLER on_touched_down FOR im_plane SENDER ACTIVATION SPACE.
Air-traffic
Airplane
controller
ENDMETHOD.
LH
Berlin
SET
HANDLER
Schmidt
on_touched_dow
n
5. Eventos
Gestin: caractersticas
El manejo de eventos es secuencial
La secuencia en la que se llaman a los mtodos manejadores de
eventos no est definida
La zona de visibilidad en la que se haya definido el evento va a
marcar la visibilidad en la que han de definirse los mtodos que
responden al evento
Evento
Pblico
Protegido
Protegido o Privado
Privado
Privado
5. Eventos
Ejercicios
Al finalizar estos ejercicios sereis capaces de:
Definir y lanzar eventos
6. Casos Prcticos
Desktop Office Integration:
El objetivo de este ejercicio es aprender a
utilizar los "container" de SAP para insertar
objetos ( docuementos office, pginas html....)
en SAP
ALV Tree
Demos creadas en SAP (transaccin DWDM )