✒️ABAP El tratamiento de los Objetos
ABAP El tratamiento de los Objetos
1. UTILIZACIÓN DE OBJETOS
Los objetos son instancias de las clases. Los objetos transitorios residen en el contexto de una sesión interna (Área de Memoria de un Programa ABAP). Una clase puede tener un número indefinido de instancias. Un objeto existe mientras al menos una referencia apunte a él o un método del objeto esté registrado como método manejador de eventos.
2. REFERENCIAS A OBJETOS
Son punteros a objetos ABAP. Se usan para acceder a un objeto desde un progr. ABAP. En ABAP, los objetos siempre están contenidos en variables referenciadas. Estas variables contienen o el valor inicial o la referencia a un objeto ya existente.
Una variable referenciada puede contener una tabla interna o una estructura, de hecho ése es el tipo de datos predefinido para las referencias. Hay 2 tipos principales de referencias:
- Referencia a Clases: Se definen con TYPE REF TO <class>. Esta sentencia se usa en la instrucción TYPE o DATA. Permite crear una instancia de la clase y acceder a un componente tal como sigue: cref->comp
- Referencia a Interfases
3. CREACIÓN DE OBJETOS
Antes de crear 1 objeto de 1 clase, hemos de declarar una variable referenciada a 1 clase. La creación del objeto se realiza mediante la sentencia CREATE OBJECT, que además de crear el objeto hace que la variable referenciada contenga la referencia al objeto.
De no existir una variable referenciada, el objeto no puede ser accedido. El Garbage Collector elimina los objetos no referenciados de la memoria principal, liberando el espacio que permanecía ocupado. IF Robj IS INITIAL nos dice si el objeto está referenciado o no (si el GC lo puede eliminar).
4. CÓMO ACCEDER a los COMPONENTES de un OBJETO?
- Para acceder al atributo attr: ref->attr
- Para llamar al método: CALL METHOD ref->meth.
Si el componente es estático, podemos usar el nombre de la clase o la variable referenciada para acceder a éllos. A este tipo de componentes podemos acceder sin que se haya creada antes objeto alguno de esa clase: class->attr y CALL METHOD class->meth.
Dentro de una clase podemos acceder a los componentes mediante la referencia a sí mismo: ME:
- Para acceder al attr de la propia clase: me->attr
- Para acceder al meth en la propia clase: CALL METHOD me->meth.
Contructores: tipo de método especial que no se puede llamar a través de CALL METHOD. Son llamados automáticamente x el Sistema para fijar el estado inicial de un objeto o clase. Hay 2 tipos de constructores: - Dependientes de instancia, - Estáticos
Deben declararse explícitamente en la clase. Asignan recursos y atributos, enviar mensajes. No hay un método destructor que se llame antes de borrar un objeto.
5. ASIGNACIÓN de REFERENCIAS
Para asignar referencias a distintas variables apuntando al mismo objeto se usa la sentencia MOVE. Si escribimos cref1 = cref2, ambas referencias deben ser del mismo tipo para referirse a la misma clase; o la clase cref1 tiene que ser la clase predefinida vacía (clase OBJECT)
La clase OBJECT no tiene componentes . Misma función que el tipo ANY para variables normales. Las variables referenciadas con el tipo OBJECT pueden funcionar como contenedoras para pasar referencias pero NO pueden usarse para acceder a objetos.
6. MI PRIMER PROGRAMA DE OBJETOS
Crearemos 1 programa orientado a objetos: simular un contador. Primero, definimos la clase CONTADOS con métodos públicos y el atributo privado COUNT:
CLASS contador DEFINITION.
PUBLIC SECTION.
METHODS: set IMPORTING value(set_value) TYPE i,
incrementar_contador,
get EXPORTING value(get_value) TYPE i.
PRIVATE SECTION.
DATA count TYPE i.
ENDCLASS.
"A continuación creamos la implementación de la clase:
CLASS contador IMPLEMENTATION.
METHOD set.
count = set_value.
ENDMETHOD.
METHOD incrementar_contador.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.
"Declaramos la variables NUMBER de tipo i, la inicializamos y creamos la referencia CNT a
"la clase contador. Luego, creamos una instancia de la clase contador y ejecutamos el método
" set. Por último, ejecutamos una iteración del método incrementar_contador e imprimos el
" valor de NUMBER.
DATA number TYPE i VALUE 5.
DATA cnt TYPE REF TO contador.
START-OF-SELECTION.
CREATE OBJECT cnt.
CALL METHOD cnt->set EXPORTING set_value = number.
DO 3 TIMES.
CALL METHOD cnt->incrementar_contador.
ENDDO.
CALL METHOD cnt->get IMPORTING get_value = number.
WRITE number.
 
 
 
Sobre el autor
Publicación académica de David Campillo Martinez, en su ámbito de estudios para la Carrera Consultor ABAP.
David Campillo Martinez
Profesión: Administrador de Sistemas - España - Legajo: PC32Z
✒️Autor de: 56 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de David Campillo