Beruflich Dokumente
Kultur Dokumente
inShare12
ABAP
JAVA
C++
Se permite
herencia mltiple
No
No
Si
Es un lenguaje
puro orientado a
objetos
NO
SI
NO
Liberacin de
objetos de forma
automtica
SI
SI
NO
Existe el concepto
interfaz
SI
SI
NO
Heredan de la
clase OBJECT
SI
SI
NO
Manejo de
parmetros
opciones de forma
explicita
Si
NO
NO
Procesador
virtual JMV
(Java Virtual
Machine)
Sobre el
sistema
operativo
ENDCLASS.
ENDCLASS.
B-1 Atributos
En ABAP los atributos son los campos internos de DATOS definidos para la clase.
Pueden declararse a partir de cualquier tipo de dato vlido en ABAP. En cada instancia de
clase los atributos reflejarn el estado del objeto (es decir, los datos del objeto).
Respetando la clasificacin general enunciada para los componentes de clase, tendremos
dos tipos de atributos: los especficos de instancia, y los estticos.
Los atributos ESTATICOS. Definen el estado de la clase vlido para todas las
instancias de la mismo. Existen, por lo tanto, slo una vez para la clase, y son
accesibles durante todo el runtime de la clase. Todos los objetos pueden acceder a
sus atributos estticos de su clase, y si se cambia un atributo esttico en un objeto,
el cambio es visible en todos los dems objetos de la clase.
B 2 Mtodos
Las funcionalidades asociadas a los objetos se definen a travs de los mtodos, que de esa
forma determinan el comportamiento de los objetos. Los mtodos son procedimientos que
definen el comportamiento de un objeto, su funcionalidad asociada. Se utilizan para
acceder a los atributos privados de una clase, como tambin modificarlos mediante una
interfaz con parmetros que les permite recibir valores y devolver valores despus de la
llamada.
En ABAP, un mtodo se define en la parte declarativa de la clase y luego se implementa en
la parte de implementacin. Nuevamente, por ser componentes de clase, cabe la misma
diferenciacin en mtodos dependientes de instancia, y estticos.
Declaracin de mtodos
Implementacin de mtodos
Cuando se implementa un mtodo no es necesario especificar los tipos de datos de los
parmetros, debido a que se encuentran ya se encuentran definidos en la declaracin. En un
mtodo se pueden declarar tanto las variables locales, como tambin usar las sentencias
RAISE <exception> y MESSAGE RAISING para controlar los errores.
METHOD <meth>
IMPORTING..[VALUE(]<ii>[)]
EXPORTING..[VALUE(]<ei>[)]
CHANGING.. [VALUE(]<ci>[)]
RETURNING VALUE(<r>)
EXCEPTIONS.. <ei>..
ENDMETHOD.
Nota: Los mtodos estticos slo pueden trabajar con los atributos estticos de la clase.
Llamadas al mtodo
Las llamadas al mtodo dependern de dnde se lo invoque:
Desde fuera de la clase, slo se llama a los mtodos cuya visibilidad nos permite
hacerlo.
En un mtodo los pasajes de parmetros de entrada son opcionales; dentro del mtodo se
declaran con el tipo IMPORTING. En cambio los de salida, no son optativos y se utiliza
como tipo a EXPORTING o RETURNING. En el caso de RETURNING slo se admite un
nico parmetro de salida y se puede combinar nicamente con parmetros declarados
como IMPORTING. El caso de CHANGING tambin puede ser opcional.
B-3 Constructores
Los constructores son un tipo especial de mtodos y su definicin e implementacin es
igual que cualquier otro mtodo. Son llamados automticamente por el sistema (cuando se
crea un objeto, es decir, cuando se crea una instancia, mediante la sentencia CREATE
OBJECT), para fijar el estado inicial de un nuevo objeto o clase (constructor esttico).
Los constructores, tanto si estn parametrizados como si no lo estn, para ser
implementados deben estar declarados explcitamente, y en su declaracin se puede
contemplar el manejo de errores.
Declaracin de constructor:
METHODS CONSTRUCTOR
IMPORTING..[VALUE(]<ii>[)] TYPE type [OPTIONAL].
EXCEPTIONS..<ei>.
El constructor esttico, no contiene parmetros y es llamado una vez por cada clase
CLASS-METHODS CLASS_CONSTRUCTOR.
Implementacion de un constructor:
Dependiente de la instancia
METHOD CONSTRUCTOR.
ENDMETHOD.
Independiente esttico.
METHOD CLASS_CONSTRUCTOR.
B-4 Eventos
Un evento es una accin que se ejecuta dinmicamente. Son usados por los objetos o las
clases para desencadenar mtodos en otros objetos o clases, llamados por los usuarios. Son
semejantes de los mtodos, sin embargo solo poseen parmetros de salida pasados por el
disparador y el mtodo manejador los recibe como entrada.
Cuando un evento es disparado por un disparador de evento (trigger), el correspondiente
mtodo manejador de eventos (event handler methods) es ejecutado en todas las clases
registradas por ese manejador (son los objetos registrados; clases es en el caso que sea
estatico pero es poco comn. Puede haber 2 objetos de una misma clase en el cual el
primero est registrado/subscripto al evento de un tercer objeto pero el segundo no), el cual
determina los eventos que deben reaccionar. La relacin entre el disparador y el mtodo
manejador de eventos se realiza en tiempo de ejecucin.
Lanzamiento de un evento
RAISE EVENT <evt>.
Clasificacin de eventos
Las constantes permiten que dar a un objeto de dato interno un valor fijo durante su
declaracin y ste no puede ser modificado. La sentencia usada es CONSTANTS.
B-6 Visibilidad
Los componentes de una clase se pueden declarar en tres reas de distinta
visibilidad: Cuando la clase se define, cada componentes se asocia a una de las tres
posibles secciones de visibilidad: pblico, protegido o privado. Las secciones de
visibilidad definen la interfaz externa de la clase.
CLASS <class> DEFINITION.
PUBLIC SECTION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
Tipos de visibilidad:
Public section: Permite que los componentes pueden ser accedidos por todos los
usuarios de la clase, mtodos de la clase y adems por cualquier clase que herede de
ella.
Protected section: Los componentes solo logran ser accedidos por los mtodos de
la clase y de las clases que heredan de ella
Private section: Los componentes slo sern accedidos por mtodos de la misma
clase.
Todos los componentes son visibles dentro de la clase, y comparten el mismo espacio de
nomenclatura, por lo que cada componente debe tener un nombre unvoco dentro de su
clase.
C- Objetos
Los objetos son entidades tangibles de una clase que residen dentro de un contexto de una
sesin interna (rea de memoria de un programa ABAP).
Caractersticas de un objeto:
Creacin de un objeto
La sentencia CREATE OBJECT <cref> crea una instancia de una clase. La variable
referenciada <cref> contiene la referencia al objeto.
Para los componentes estticos (dependientes de clase) se puede usar tanto el nombre de la
clase como la variable referenciada.
Dentro de una clase se puede acceder tambin a los componentes individuales mediante la
referencia a s mismo ME:
Para acceder al atributo attr en la propia clase: me->attr. (tambin se acepta slo
attr)
Referencias
Las variables de referencia permiten acceder a los objetos. En vez de crear variables de
referencia con referencia a una clase, se las puede definir con referencia a una interfaz. Este
tipo de variables nicamente puede contener referencias a objetos de clases que
implementan la interfaz correspondiente.
Se la define mediante la adicin TYPE REF TO <intf>.
Si se desea crear una nueva instancia de la clase que implementa esta interfaz, se lo debe
hacer mediante la sentencia:
CREATE OBJECT <iref> TYPE <aclass>, donde <iref> es una variable de referencia a
interfaz y <aclass> la clase que implementa a <intf>
Si la instancia ya existe se puede hacer la siguiente asignacin entre la variable de
referencia a clase y la variable de referencia a interfaz:
<iref> = <cref>.
Cuando se quiere acceder a un componente definido en la interfaz <intf> mediante la
variable de referencia a clase <cref> se lo debe hacer mediante la siguiente forma:
<cref>-><intf~compi>
Pero cuando se accede mediante <iref> se lo hace a travs de la forma:
<iref>-><compi>.
D- Herencia de clases
La herencia se realiza entre dos clases (una superclase y una subclase). La subclase
heredar los componentes pblicos y privados de la superclase, logrando el mismo
comportamiento. Teniendo la posibilidad de extender o limitar ese comportamiento para
proveer una accin requerida.
Cabe aclarar que aunque hereda los componentes privados, stos NO son visibles dentro de
la subclase. Es decir, no puede hacer referencia directamente a atributos privados y
alterarlos. Se van a poder manipular nicamente si en la superclase hay mtodos public o
protected que lo permiten.
El nodo raz de todos los rboles de herencia en ABAP Objects es la clase predefinida
vaca OBJECT.
Definicin para una herencia:
CLASS <subclass> DEFINITION INHERITING FROM <superclass>.
Nota: Los atributos estticos slo existen una vez y son visibles en todas las clases del
rbol de herencia.
Debido a que los constructores no se heredan, hay existen dos maneras de implementarlo
que depender de si existe dependencia no a una instancia.
Constructores estticos
Se ejecuta de la misma manera que los constructores dependientes de la instancia solo varia
en la declaracin de la implementacin.
Llamado al constructor de la superclase.
CLASS_CONSTRUCTOR.
Un mtodo abstracto solo se puede definirse en una clase abstracta y puede ser
implementado en sus respectivas subclases.
Las clases abstractas no pueden ser instanciadas. Son utilizadas para la declaracin
de mtodos no abstracto, pero al menos debe contener un mtodo abstracto.
Un mtodo final es la manera de proteger mtodos para no ser redefinidos por las
subclases.
Las clases finales no pueden tener subclases, debido a que son las que finalizan el
rbol de herencia. De forma implcita todos sus mtodos son final.
E- Interfaz
El objetivo de una interfaz es establecer relaciones entre clases sin usar herencia, ya que a
veces no hay una super-clase adecuada para establecer una relacin de herencia.
Una interfaz no puede instanciar objetos, sin embargo pueden definirse atributos static y
final. Se utiliza principalmente para la definicin de mtodos abstractos, por lo cual la
implementacin se realiza en otras clases. Todos los componentes son visibles para las
clases en donde se implementan los mtodos definidos.
Definicin de interfaz
INTERFACE <intf>.
ENDINTERFACE.
ENDMETHOD.
Referencias a interfaces
Las variables de referencia permiten acceder a los objetos. En vez de crear variables de
referencia con referencia a una clase, se las puede definir con referencia a una interfaz. Este
tipo de variables nicamente puede contener referencias a objetos de clases que
implementan la interfaz correspondiente.
Se la define mediante la adicin TYPE REF TO <intf>.
Si se desea crear una nueva instancia de la clase que implementa esta interfaz, se lo debe
hacer mediante la sentencia:
CREATE OBJECT <iref> TYPE <aclass>, donde <iref> es una variable de referencia a
interfaz y <aclass> la clase que implementa a <intf>
S la instancia ya existe se puede hacer la siguiente asignacin entre la variable de
referencia a clase y la variable de referencia a interfaz:
<iref> = <cref>.
Cuando se quiere acceder a un componente definido en la interfaz <intf> mediante la
variable de referencia a clase <cref> se lo debe hacer mediante la siguiente forma:
<cref>-><intf~compi>
Pero cuando se accede mediante <iref> se lo hace a travs de la forma:
<iref>-><compi>.
F- Exception
Es una situacin que ocurre durante la ejecucin de un programa que interrumpe o cambia
su normal comportamiento. La idea fundamental es que tales situaciones puedan ser
manejadas de alguna forma. Las excepciones son representadas por una instancia de una
clase excepcin. Los atributos de tal objeto van a contener informacin acerca de la
situacin ocurrida.
Una excepcin puede ser levantada con la sentencia RAISE EXCEPTION. Cuando esto
ocurre, el sistema busca un manejador adecuado que se haga cargo y en el caso de no
encontrarlo, se produce un error en tiempo de ejecucin. Este manejo se puede llevar
nicamente a cabo si la sentencia que podra ocasionar que se levante la excepcin, se
encuentra encerrada por el bloque TRY-ENDTRY. Especficamente, el manejo de la
excepcin se realiza con la sentencia CATCH que se encuentra dentro del bloque.
TRY.
SENTENCIA_X.
CATCH cx_exc_1 INTO ref_exc_1.
CLEANUP.
ENDTRY.
SENTENCIA_X puede ser una subrutina, un modulo de funcin, el mtodo de un objeto
o algo que pueda lanzar una o ms excepciones. Cada cx_exc_i es una clase excepcin
que puede ser lanzada dentro de SENTENCIA_X. ref_exc_i es una instancia de la
clase cx_exc_i o de alguna. Lo que se encuentra dentro del bloque CLEANUP se
produce cuando el sistema no encuentra un manejador para la excepcin que fue levantada.
Si SENTENCIA_X levanta la excepcin cx_exc_3 y no existe un CATCH para la misma,
se ejecutar las instrucciones que se encuentren en el bloque CLEANUP.
Estos conceptos definen las generalidades de la implementacin del paradigma orientado a
objetos en el mundo SAP a travs de ABAP Object. En el prximo tip de la serie de
tutoriales, abordaremos un ejemplo concreto.
- Especialista ABAP
Reciba por mail los mejores tips, notas tcnicas, tutoriales paso a paso, etc. Los
Comentarios
#6 Elvis 24-09-2013 21:50
Eres una bendicin!!!
Citar
#5 Yomy 20-09-2013 15:58
Excelente articulo, me ayudo a aclarar muchas dudas!!!
He visto muchos artculos sobre ABAP OBJECT pero ninguno tan claro como este.
Citar
#4 Juan 19-07-2013 16:57
Excelente!
Citar
#3 David Urquin 16-01-2013 12:29
Facil de entender!!!
Gracias por los tutoriales.
Saludos desde Mexico.
Citar
#2 Rafa rafa 06-09-2012 14:45
Hola Celeste.
Apreciable y recomendadsimo artculo. Noms una consideracin: Java y ABAP a pesar de
no tener herencia mltiple de clases, s la hay en cambio de interfaces.
Citar
#1 Roberto 04-09-2012 19:39
Exelente tutorial celeste, soy consultor abap 4 y quiero aprender mas sobre Abap Objects.
Esperare para el ejemplo de esta teoria. Consulta: para hacer practicas sobre esto tengo que
bajar el minisap?. Gracias.
Citar