![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP El tratamiento de los Objetos
ABAP El tratamiento de los Objetos
![ABAP El tratamiento de los Objetos ABAP El tratamiento de los Objetos](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/17.jpg)
Lección 3: Tratamiento de Objetos
1 utilización de Objetos:
Los objetos son instancias de las clases. Cada objeto tiene una identidad propia y tiene sus propios atributos. Todos 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
Sabías que: un objeto existe mientras se esté usando en el programa, lo que quiera decir que existe siempre que al menos una referencia apunte hacia él, o al menos un método del objeto este registrado como método manejador de eventos.
2 Referencias a Objetos
Son punteros a los objetos ABAP.
Las referencias a objetos se usan para acceder a un objeto desde un programa ABAP. En ABAP los objetos están siempre contenidos en varias referencias.
Las variables referenciadas o bien contienen el valor inicial o bien contiene la referencia a un objeto ya existente. La identidad de un objeto depende de su referencia. Una variable referencia que apunta a un objeto es la que conoce a 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. Estos quieren decir que una variable referenciada puede contener una tabla interna o estructura.
ABAP contiene un tipo de datos predefinidos para las referencias, comparable a los tipos de datos para las estructuras o para las tablas interna. El tipo de datos completo no está definido hasta la declaración en el programa ABAP. El tipo de datos de la variable referenciada determina como el programa actúa con su valor o sea, con el regencia al objeto.
Hay dos tipos de principales referencias. La referencia a clases y la referencia a interfaces, las cuales veremos más adelante en el curso.
Las referencias a clases se definen usando la siguiente acción
TYPE REF TO <class>
Ejemplo
DATA: v_alv TYPE REF TO cl_gui_alv_grid.
Esta adición se usa en las sentencias TYPES o DATA. Una variable referenciada de este tipo se llama variable referenciada a clase o referencia a clase simplemente.
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:
Antes de crear un objeto de una clase es necesario declarar una variable referencia con la referencia a la clase. Una vez que se ha declarado la referencia a la clase, se puede crear el objeto usando la sentencia CREATE OBJECT. Esta sentencia crea una instancia de la clase y la variable referencia contiene la referencia al objeto.
Ejemplo
:
Audio Tips:
Si no existe una referencia que apunte a un objeto entonces el objeto no puede ser accedido sintácticamente, el recolector de basuras es una rutina del sistema que se ejecuta automáticamente. Cada el sistema no tiene tares que revisar y elimina los objetos no referenciados de la memoria principal librando el espacio que permanecía ocupado.
El propósito del recolector de basura es identificar y descartar los objetos que ya no son necesarios para un programa de manera que sus recursos pueden ser recuperados y reutilizados. Dado la referencia ref_objeto podemos utilizar la siguiente lógica
if ref_objeto es inicial. Si apunta algún objeto es nula
4 Cómo acceder a los componentes de un Objeto?
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 referencia
Ø Para acceder al atributo att: ref->attr
Ø Para llamar al método meth: CALL METHOD ref ->meth.
Para los componentes estáticos o independientes de instancia, solo 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 pueden acceder también a los componentes individuales mediante la referencia a si mismo ME:
Ø Para acceder al atributo attr en la propia clase: me->attr.
Ø Para llamar al método meth en la propia clase: CALL METHOD me->meth.
Audio Tips: los constructores son un tipo especial de métodos que no puede ser llamado de la sentencia CALL METHOD, estos métodos son llamados automáticamente por el sistema para fijar el estado inicial de nuevo objeto o clase. Hay dos tipos de constructores:
Los dependientes de instancia y los estáticos e independientes de instancia. Los constructores son métodos con un nombre predefinidos para usarlos se deben ser declarados explícitamente en la clase, un constructor será necesario si después de crear una instancia en una clase necesitamos asignar recursos inicializar atributos que no puedan ser cubiertos con la visión VALUE de la sentencia DATA, modificar atributos estáticos o enviar 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 esta manera se puede tener las referencias en varias variables referenciadas a pintando al mismo objeto.
Cuando se asigna una referencia a una variable referenciada distinta, sus tipos deben ser compatibles. Cuando se usa la sentencia MOVE o el operador de asignación = para asignar variables referenciadas, el sistema debe ser capaz de reconocer en el cheque de la sintaxis si la asignación va a ser posible. Esto mismo se aplica cuando se pasan variables referenciadas como parámetros a procedimientos.
Si escribimos la sentencia cref1 = cref2, las dos referencias tienen que tener el mismo tipo, esto es, tienen que referirse a la misma clase, o bien la clase de cref1 tiene que ser la clase predefinida como vacía, o sea OBJECT.
La clase OBJECT no tiene componentes y tiene la misma función para la variable referenciadas que el tipo de datos ANY para las variables normales. Las variables referenciadas con el tipo OBJECT pueden funcionar como contenedores para pasar referencias. De cualquier manera, nunca pueden ser usadas para acceder a objetos.
6 Mi primer programa de objetos:
El objeto del programa será simular un contenedor. Para ello, definimos la clase CONTADOR con los métodos públicos y el atributo privado COUNT
Luego creamos la implementación de la clase.
Declaramos la variable NUMBER de tipo i, inicializaos con el valor cinco y CNT que será una regencia de la clase contador. Luego creamos una instancia de la clase contador y ejecutamos el método set. Finalmente, ejecutamos dentro de una iteración el método incrementar_contador el cual sumara 1 al contenido de la variable number, obtenemos su nuevo valor y la imprimimos en pantalla.
Si ejecutamos el programa veremos la siguiente salida por pantalla
 
 
 
Sobre el autor
Publicación académica de Jhon Deibys Cano Pineda, en su ámbito de estudios para la Carrera Consultor ABAP.
Jhon Deibys Cano Pineda
Profesión: Ingeniero de Sistemas - Colombia - Legajo: WZ11E
✒️Autor de: 118 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jhon Cano Pineda