✒️ABAP El tratamiento de los Objetos
ABAP El tratamiento de los Objetos
1.- Utilización de Objetos.
Los objetos son instancias de las clases. Cada objeto tiene una identidad propia y tiene sus propios objetos. Todos los objetos transitorios residen en el contexto de uan sesión interna (área de memoria de un programa ABAP). Una clase puede tener un número indefinido de instancias.
Un objeto existe mientras se esté usando en el programa, lo que quiere decir que existe siempre que al menos una referencia apunte hacia él, o al menos un método del objeto esté registrado como método manejador de eventos.
2.- Referencia a Objetos
- Son punteros a los objetos ABAP.
- Las referencias a objeto se usan para acceder a un objeto desde un programa ABAP.
- En ABAP los objetos están siempre contenidos en variables referenciadas.
- Las variables, o contienen un valor inicial o contienen la referencia a un objeto ya existente.
- La identidad de un objeto depende de su referencia.
- Una variable referenciada que apunta a un objeto se le conoce como la identidad del objeto. Los usuarios no pueden acceder a la identidad del objeto directamente.
- Las variables referenciadas en ABAP son tratadas como cualquier otro objeto de datos elemental, por lo tanto estas pueden contener una tabla interna o una estructura.
- ABAP contiene un tipo de datos predefinido para las referencias, comparable a los tipos de datos para las estructuras o para las tablas internas.
Hay 2 tipos principales de referencias, la referencia a clases y la referencia a interfases:
Sintaxis para las referencias a interfases: TYPE REF TO <class>.Ejemplo: DATA: v_alv TYPE REF TO cl_gui_alv_grid.
Esta adición es utilizada con las sentencias TYPES o DATA. La variable anterior se le llama variable referenciada a clase o referencia a clase simple.
Una referencia a clase permite al usuario crear una instancia, es decir un objeto, de la clase y acceder a un componente visible de la siguiente manera: cref ->comp.
3.- Creación de Objetos.
- Es necesario declarar una variable referenciada con la referencia a la clase.
- Una vez declarada la variable, se crea el objeto usando la sentencia CREATE OBJECT. Esta sentencia crea una instancia de la clase y la variable referenciada contiene la referencia al objeto. Ejemplo:
- DATA cnt TYPE REF TO counter........... CREATE OBJECT cnt.
Si no existe una referencia que apunte al objeto, entonces el objeto no puede ser accedido sintacticamente, el Garbage Collector o Recolector de Basura es una rutina del sistema que se inicia automaticamente cada vez que el sistema no tiene tareas más importantes que realizar y elimina los objetos no referEnciados de la memoria principal, liberando el espacio de la misma que permanecia ocupado. El próposito del recolector de Basura es identificar y descartar los objetos que ya no son necesarios para un programa de manera que sus recursos puedan ser recuperados y reutilizados. Dada la referencia R_OBJETO podemos utilizar la siguiente lógica: IF R_OBJETO IS INITIAL, determinaremos si R_OBJETO contiene la referencia NULA es decir que NO apunta a un objeto.
4.- Como acceder a los componentes de un Objeto.
INSTANCIAS: Son objetos de una clase determinada que fueron creados en tiempo de ejecución.
- Los programas sólo pueden acceder a los componentes de las instancias usando las referencias de las variables referenciadas. La sintaxis es la siguiente, siendo ref la variable referenciada:
- Para acceder al atributo: attr: ref->attr.
- Para llamar al método meth: CALL METHOD ref->meth.
Para los componentes estáticos o independientes de instancia, sólo dependientes de clase, se pueden usar tanto el nombre de la clase como la variable referenciada. También es posible acceder a los componentes estáticos de una clase antes de que un objeto de la clase haya sido creado.
La sintaxis, siendo class la clase es la siguiente:
- Para acceder al atributo estático attr: class->attr.
- Para llamar al método estático meth: CALL METHOD class->meth.
Dentro de una clase se puede acceder también a los componentes individuales mediante la referencia a sí mismo ME:
- Para acceder al atributo attr en la propia clase attr: me->attr.
- Para llamar al método meth en la propia clase: CALL METHOD me->meth.
Los CONSTRUCTORES son un tipo especial de métodos que no pueden ser llamados a tráves de la sentencia CALL METHOD, estos métodos son llamados automáticamente por el sistema para fijar el estado inicial de un nuevo objeto o clase. Hay 2 tipos de CONSTRUCTORES;
- Dependientes de Instancia:
- Estáticos o Independientes de Instancia:
Los CONSTRUCTORES son métodos con un nombre predefinido para usarlos deben ser declarados explicitamente en la clase, un constructor será necesario si después de crear una instancia de una clase, necesitamos: Asignar Recursos, Inicializar Atributos que no pueden ser cubiertos con la adición VALUE de la sentencia DATA, modificar atributos estáticos o envíar mensajes que indiquen que un nuevo objeto a sido creado. No existe un destructor en los objetos ABAP, es decir, no hay un método de instancia que se llame automáticamente antes que un objeto sea borrado.
5.- Asignación de Referencias.
- Se pueden asignar referencias a distintas variables referenciadas usando la sentencia MOVE. De este modo, se pueden tener las referencias en varias variables referenciadas apuntando a un mismo objeto.
- Cuando se asigna una referencia a una variable referenciada distinta, sus tipos deben ser compatibles.
- Se usa la sentencia MOVE ó el operador = para asignar variables referenciadas, el sistema debe de ser capaz de reconocer el chequeo de la sintaxis si la asignación va a ser posible. Esto aplica cuando se pasan variables referenciadas como parámetros a procedimientos.
- En la sentencia cref1=cref2 , ambas tiene que ser del mismo tipo, esto es, tienen que referirse a la misma clase o bien a la clase de cref1, tiene que ser la clase predefinida como vacía, o sea OBJECT.
- La clase OBJECT NO tiene componentes y funciona para las VARIABLES REFERENCIADAS que el tipo de datos ANY para las VARIABLES NORMALES.
- Las variables referenciadas con el tipo OBJECT pueden funcionar como contenedoras para pasar referencias.
- Las variables referenciadas con el tipo OBJECT NUNCA pueden ser usadas para acceder a objetos.
6.- Mi primer programa de objetos.
Objetivo del programa: Simular un contador.
- Definimos la clase: contador
- Métodos públicos.
- Definimos Atributo privado COUNT.
- Creamos la implentación de la clase
- Declaramos la variable NUMBER del tipo i, inicilaizada en 5.
- CNT sera una referencia de la clase contador.
- Ejecutamos dentro de un ciclo el método_contador, sumará 1 a la variable number, en cada pasada e imprimos.
 
 
 
Sobre el autor
Publicación académica de Gustavo Alberto Ramirez Franco, en su ámbito de estudios para la Carrera Consultor ABAP.
Gustavo Alberto Ramirez Franco
Profesión: Ingeniero en Sistemas Computacionales - Mexico - Legajo: TA38Q
✒️Autor de: 38 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Gustavo Ramirez