✒️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 que tiene sus propios atributos. Todos los objetos transitorios residen en el contexto de una sesión interna ( área de memoria de un programa abad)Una clase pude tener un número indefinido de instancias.
Un objeto existe mientras se este usando en el programa existe que al menos una referencia apunte a el, o al menos un método del objeto este registrado como método manejado de eventos.
2-Referencias de Objetos
Referencias a objetos
Son punteros a los objetos ABAP, se usan para acceder a fin objeto desde un programa ABAP, los objetos están siempre contenidos en variables referenciales.
Las variables reverenciadas o bien contienen el valor inicial o bien contienen la referencia a un objeto ya existente. La identidad de un objeto depende de su referencia, una variable reverenciada que apunta a un objeto es la que conoce la identidad del objeto. Los usuarios no pueden acceder a la identidad del objeto directamente.
Las variables reverenciadas en ABAP son tratadas como cualquier otro objeto de datos elemental, una variable reverenciada puede contener una tabla interna o un estructura.
ABAP contiene un tipo de datos predefinidos para las referencias, comparables a los tipos de datos para las estrucutúras o para las tablas internas. El tipo de duros completo no esta definido hasta la declaración en el programa ABAP El tipo de datos de la variable reverenciada determina como el programa actual con su valor, con la referencia al objeto.
Hay dos tipos principales de referencias la referencia a clases y la referencia a interfaces.
LAs referencias a clases se definen usando:
TYPE REF TO <class>.
Ej;
DATA: v_alv TYOE REF TO cl_gui_alv_grid.
Esta adicionales se usa ene las sentencias TYPES o DATA, una variable rwefenreciada de este tipo se llama variable reverenciada a clase o referencia a clase siempre.
Una referencia a clse permite al usuario crear una instancia, es decir un objeto, de la clase y acceder a un componente visible.
cref->comp
3- Creación de Objetos
Antes de crear un objeto de una case es necesario declarar una variable reverenciada con la referencia a la clase, una vez declarado se puede crear el objeto usando la sentencia CREATE OBJECT. Esta sentencia crea una instancia de la clase y la variable reverenciada contiene la referencia al objeto.
CLASS counter DEFINITION.
PUBLIC SECTION.
METHODS: set IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.
PRIVATE SECTION.
DATA count TYPE i. "Atributo Dependiente de Instancia
CLASS-DATA v_suma TYPE i. "Atributo Independiente de Instancia
ENDCLASS.
CLASS counter IMPLEMENTATION.
METHOD set.
count = set_value.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.
DATA number TYPE i VALUE 5.
DATA cnt TYPE REF TO counter.
START-OF-SELECTION.
CREATE OBJECT cnt.
Si no existe una referencia que apunte a un objeto, este no puede ser accedido sintácticamente. El Garbage Collector es una rutina del sistema que se inicia de forma automática cada vez que el sistema no tiene tareas más importantes que realizar y elimina los objetos no referenciados de la memoria principal liberando espacio que permanecía ocupado.
El propósito de este Garbage Collector es identificar y descartar los objetos que ya no son necesarios para un programa, de manera que sus recursos puedan ser recuperados y utilizados.
Dada la referencia r_objeto, podemos comprobar si esta apunta a un objeto con la sentencia:
IF r_objeto IS INITIAL.
Mediante esta lógica, determinamos si r_objeto, contiene la referencia nula, es decir, si no apunta a algún objeto.
4- Como acceder a los componentes de un Objeto?
Los programas solo pueden acceder a los componentes de las instancias usando las referencias de las variables reverenciadas. Siendo ref la variable reenviada:
Para acceder al atributo atar: ref->atar.
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 el objeto de la clase haya sido creado.
La sintaxis, siendo class la clase.
Para acceder al atributo estático atar: 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 si mimo 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.
Los constructores son un tipo especial de métodos que no pueden ser llamados a través 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 dos tipos de constructores, los dependientes de instancia y los estáticos o independientes de instancia.
Los constructores son métodos con un nombre predefinido, para usarlos deben ser declarados explícitamente 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 enviar mensajes que indiquen que se ha creado un nuevo objeto.
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-Asignacion de referencias
Se pueden asignar referencias a distintas variables referenciadas usando la sentencia MOVE, se puede tener las referencias en varias variables reverenciadas apuntando al mismo objeto.
Cuando se asigna una referencia a un a variable reverenciada distinta, sus tipos deben ser compatibles. Cuando se usa la sentencia MOVE o el operador de asignación = para asignar variables reverenciadas, el sistema debe ser capaz de reconocer en el chequeo de la sintaxis se la asignación va a ser posible. Esto mismo se aplica cuando se pasan variables reverenciadas como parámetros a procedimientos.
Si la sentencia cref1 = cref2, las dos referencias tienen el mismo tipo, esto es, tienen que referirse a la misma clase, o bien la clase de cref1 tiene que se la clase predefinida como vacía, o sea OBJECT.
La clase OBJECT no tiene componentes y tiene la misma función para las variables de referenciadas que el tipo de datos ANY para las variables normales. Las variables reverenciadas con el tipo OBJECT pueden funcionar como contenedoras para pasar referencias, nunca pueden ser usadas para acceder a objetos.
6- MI primer programa de objetos.
Creamos nuestro primer programa con orientación a objetos, el objetivo del programa será simular un contador, para ello definimos la clase CONTADOR con los métodos públicos y atributos privado COUNT.
Luego creamos la implementación de la clase.
Declaramos las variables NUMBER de tipo i, inicializada con el valor cinco y CNT que será una referencia 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 sumará 1 al contenido de la variable number, obtenemos su nuevo valor y lo imprimimos en pantalla.
 
 
 
Sobre el autor
Publicación académica de Juan Carlos Pavicich, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Carlos Pavicich
Profesión: Técnico Informático - Argentina - Legajo: VR91L
✒️Autor de: 116 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Tengo el agrado de dirigirme a ud/s con el objeto de mencionar mi experiencia y conocimientos técnicos necesarios para desarrollar actividades en el rubro de su empresa.
Certificación Académica de Juan Pavicich