
lección "3: El tratamiento de los Objetos"
• Utilización de Objetos Los objetos son instancias de las clases, cada uno con su propia identidad y atributos. Residen en el área de memoria de un programa ABAP (contexto de una sesión interna). Una clase puede tener un número indefinido de instancias. Para acceder a un objeto desde un programa ABAP, se utilizan referencias a objeto, las cuales siempre están contenidas en variables referenciadas.
â—¦ Las variables referenciadas pueden contener un valor inicial o una referencia a un objeto existente.
â—¦ La identidad de un objeto depende de su referencia, y los usuarios no pueden acceder directamente a ella.
â—¦ Las variables referenciadas en ABAP se tratan como cualquier otro objeto de datos elemental.
â—¦ El tipo de datos de la variable referenciada determina cómo el programa interactúa con su valor.
â—¦ Un objeto existe mientras al menos una referencia apunte a él o un método del objeto esté registrado como manejador de eventos.
• Referencias a Objetos Las referencias a objeto son punteros a los objetos ABAP. ABAP incluye un tipo de datos predefinido para referencias. Existen dos tipos principales de referencias: a clases y a interfaces. Una referencia a clase permite crear una instancia y acceder a sus componentes visibles.
â—¦ La declaración de una variable referenciada completa su tipo de datos.
â—¦ Una referencia a clase permite crear una instancia, es decir, un objeto, de la clase.
â—¦ Con una referencia a clase, se puede acceder a un componente visible de la clase.
• Creación de Objetos Antes de crear un objeto de una clase, es imprescindible declarar una variable referenciada con la referencia a la clase. Una vez que la referencia ha sido declarada, el objeto se puede crear utilizando la sentencia CREATE OBJECT. Esta sentencia crea una instancia de la clase, y la variable referenciada pasa a contener la referencia a dicho objeto.
â—¦ La sentencia CREATE OBJECT es fundamental para dar vida a una instancia de una clase.
• ¿Cómo acceder a los componentes de un Objeto? Los programas solo pueden acceder a los componentes de las instancias utilizando las referencias de las variables referenciadas. La sintaxis para acceder a un atributo de instancia es ref->attr y para llamar a un método de instancia es CALL METHOD ref->meth. Para los componentes estáticos o independientes de instancia (dependientes de clase), se puede usar tanto el nombre de la clase como la variable referenciada, incluso antes de que se haya creado un objeto de la clase. Dentro de una clase, se puede acceder a los componentes individuales a través de la referencia a sí mismo ME.
â—¦ Se utiliza ref->attr para acceder a un atributo de instancia.
â—¦ Se usa CALL METHOD ref->meth para llamar a un método de instancia.
â—¦ Para componentes estáticos, la sintaxis es class->attr para atributos estáticos y CALL METHOD class->meth para métodos estáticos.
â—¦ La auto-referencia me-> permite acceder a atributos y llamar a métodos dentro de la propia clase.
• Asignación de Referencias Es posible asignar referencias a distintas variables referenciadas utilizando la sentencia MOVE. Esto permite que múltiples variables referenciadas apunten al mismo objeto. Al asignar referencias, sus tipos deben ser compatibles para que la asignación sea posible durante el chequeo de sintaxis. La clase OBJECT es una clase predefinida vacía que actúa como un tipo genérico para variables referenciadas, similar a ANY para variables normales, y es útil para pasar referencias, aunque no se puede usar para acceder directamente a objetos.
â—¦ Cuando se asignan referencias, el sistema verifica la compatibilidad de los tipos.
â—¦ La clase OBJECT funciona como un contenedor para referencias, pero no permite el acceso a los objetos.
• Mi primer programa de objetos Este ejemplo práctico simula un contador utilizando la Programación Orientada a Objetos en ABAP. Se define una clase CONTADOR con métodos públicos y un atributo privado, y luego se implementa su lógica. El programa declara variables y una referencia a la clase CONTADOR, crea una instancia de la clase, y ejecuta sus métodos dentro de una iteración para incrementar el contador y mostrar el valor resultante en pantalla.
â—¦ El programa utiliza la clase CONTADOR para gestionar un valor numérico.
â—¦ La definición de la clase incluye métodos como set e incrementar_contador.
â—¦ La lógica principal crea un objeto, lo inicializa y lo manipula en un bucle.
â—¦ La salida muestra el incremento del contador en pantalla.