✒️ABAP El tratamiento de los Objetos
ABAP El tratamiento de los Objetos
TRATAMIENTOS DE OBJETOS
Utilización de objetos: Los objetos son instancias de las clases. Cada objeto tiene una identificación propia y tiene sus propios atributos. Todos los objetos transitorios residen en el contexto de una sesión interna. 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.
Referencia a objetos: Son punteros a los objetos ABAP. Las referencias a objeto se usan para acceder a un objeto desde un programa. Los objetos están siempre contenidos en variables referenciadas. Las variables referenciadas o bien contienen el 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 es la que conoce la identidad del objeto. Los usuarios no pueden acceder a la identidad del objeto directamente. Las variables referenciadas son tratadas como cualquier otro objeto de datos elemental, una variable referenciada puede contener una tabla interna o una estructura. Hay dos tipos principales de referencias, la referencia a clases y la referencia a interfaces. Las referencias a clases se definen con las palabras clave “TYPE REF TO” seguido de la clase. Este añadido se usa en las sentencias TYPES o DATA. Una variable referenciada de este tipo se llama variable referenciada a clase o referencia a clase. 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".
Creación de objetos: Antes de crear un objeto de una clase, es necesario declarar una variable referenciada con la referencia a la clase. Una vez declarada 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.
NOTA: Si no existe una referencia que apunte a un objeto, no se puede acceder al objeto sintácticamente. El garbage collection, es una rutina del sistema que se inicia automáticamente cada vez que el sistema no tiene tareas más importantes que realizar y que elimina los objetos no referenciados de la memoria principal liberando espacio que permanecía ocupado. La función de este recolector de basura es identificar y descartar los objetos que ya no son necesarios para un programa para la reutilización de recursos. Para ver si una referencia no apunta a algún objeto, se puede realizar mediante la sentencia “IS INITIAL”.
Forma de acceder a los componentes de un objeto: Los programas solo pueden acceder a los componentes de las instancias usando las referencias de las variables referenciadas. La sintaxis, siendo “ref” la variable referenciada: para acceder al atributo attr (Ref->attr) y para llamar al método meth (CALL METHOD ref->meth.). Para los componentes estáticos o independientes de instancia, solo dependientes de clase, se puede 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 que un objeto de la clase hay sido creado. La sintaxis, siendo “class” la clase: para acceder al atributo estático attr (Class=>attr) y 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 mismo ME: para acceder al atributo attr en la propia clase (Me->attr.) y para llamar al método meth en la propia clase (CALL METHOD me->meth)
NOTA: Los constructores son un tipo especial de método, que no pueden ser llamados a través de la sentencia “CALL METHOD”. Son llamados automáticamente por el sistema para fijar el estado inicial un nuevo objeto o clase. Hay dos tipos de constructores: los dependiente de instancia y los estáticos o independientes de instancia. Los constructores son unos métodos con unos nombres predefinidos. Para usarlos, deben ser declarados explícitamente en la clase. Un constructor será necesario si después de crear una instancia de una clase, se necesita asignar recursos, inicializar atributos que no pueden ser cubiertos con la palabra reservada “VALUE”, modificar atributos estáticos o enviar mensajes que indiquen que un nuevo objeto ha 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.
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 apuntando al mismo objeto. Cuando se asigna una referencia a una variable 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 chequeo si la asignación va a ser posible. También se aplica cuando se pasan variables referenciadas como parámetros a procedimientos. En la sentencia “cref1 = cref2”, las dos referencias tienen que tener el mismo tipo, referirse a la misma clase, o bien la clase de cref1 tiene que ser la clase predefinida como vacía, OBJECT. La clase OBJECT no tiene componentes y tiene la misma función 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. No pueden ser usadas para acceder a objetos.
Mi primer programa de objetos: El objetivo del programa será simular un contador. Para ello, se define la clase CONTADOR con los métodos públicos y el atributo privado COUNT. Se ha de crear la implementación de la clase. Después se ha de declarar las variables “NUMBER” del tipo i, inicializada con el valor cinco y “CNT” que será una referencia de la clase contador. Seguidamente se ha de crear una instancia de la clase contador y ejecutar el método “SET”. Por último, se ha de ejecutar dentro de una iteración el método “incrementar_contador”, que sumará 1 al contenido de la variable “NUMBER”. Se obtiene el nuevo valor y se imprime por pantalla. Aparecerá por pantalla el resultado del contador.
 
 
 
Sobre el autor
Publicación académica de Felipe Estepa Quintero, en su ámbito de estudios para la Carrera Consultor ABAP.
Felipe Estepa Quintero
Profesión: Tecnologo en Gestion Logistica - Colombia - Legajo: QH16V
✒️Autor de: 118 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Felipe Estepa