✒️ABAP El tratamiento de los Objetos
ABAP El tratamiento de los Objetos
Unidad 5: Programación orientada a objetos.
Lección 3: Tratamiento de objetos.
1.- Utilización de objetos.
Los objetos son instancias de las clases. Cada objeto tiene entidad propia y sus propios atributos. Los objetos son transitorios y existen en el contexto de una sesión. Es decir que se estén usando en el programa o haya alguna referencia apuntándolo o que exista por lo menos un método manejador de eventos registrado en el objeto. El número de objetos generados por una clase es ilimitado.
2.- Referencia de objetos.
Son apuntadores a objetos ABAP que se utilizan para acceder a un objeto desde un programa ABAP. Los objetos ABAP siempre están contenidos en variables referenciadas. Esas variables contendrán el valor inicial o la referencia a un objeto existente. No es posible acceder a un objeto directamente.
Las variables referenciadas son tratadas como cualquier objeto de datos elemental por tanto pueden contener tablas internas o estructuras.
ABAP posee un tipo de datos datos predefinido para las referencias. El tipo de datos completo no esta definido hasta la declaración en el programa ABAP. Según sea el tipo de datos de la variable a la que se referencia se determina como actuará el programa con la referencia al objeto o sea su valor.
Hay dos tipos principales de referencias:
- Referencia a clases. Se definen mediante la cláusula TYPE REF TO <nombre clase>. Esta cláusula es aplicable a sentencias TYPES o DATA.
Estas referencias permiten al usuario crear un objeto de la clase y acceder a los componentes visibles mediante la sentencia cref --> componente, siendo cref la variable de referencia al componente.
- Referencia a interfaces. Se verá posteriormente.
3.- Creación de objetos.
Para poder crear un objeto de una clase primero hay que declarar una variable referenciada con referencia a la clase. Una vez realizado esto podemos crear el objeto mediante la sentencia CREATE OBJECT <variable referenciada>. En la variable referenciada después de la ejecución de la sentencia tendremos la referencia al objeto.
Si no hay referencia apuntando al objeto este no puede ser accedido sintácticamente por tanto el garbage colector destruira todos los objetos no referenciados cuando se active automáticamente la próxima vez liberando el espacio de memoria que ocupaba el objeto u objetos afectados. El garbage colector se encarga de permitir la utilización de recursos bloqueados por elementos que ya no tienen ninguna razón de existir en el sistema. Si queremos saber si el objeto esta refereciado o no podemos utilizar la sentencia if siguiente: If <nombre variable de referencia> is initial es cierto implica que el objeto asignado a la variable de referencia no esta en uso.
4.- ¿ Como acceder a los componentes de un objeto ?
Los programas solo acceden a los componentes de las instancias mediante el uso de las referencias de las variables referenciadas. Considerando ref la variable referenciada:
- Acceso a un atributo: ref --> attr.
- Llamada al método: CALL METHOD ref --> meth.
Para acceso a componentes estáticos o independientes de instancia, solo dependientes de clase se puede acceder tanto por el nombre de la clase como la variable referenciada. Es posible acceder a los componentes estáticos de una clase antes de que se haya creado un objeto de la misma. Siendo class una clase:
- Acceso a un atributo estático. class --> attr.
- Acceso a un método estático. CALL METHOD class --> meth.
Adicionalmente es posible acceder a los componentes individuales de una clase desde la propia clase mediante autoreferencia ME:
- Acceso a un atributo de la propia clase. me --> attr.
- Acceso a un método de la propia clase. CALL METHOD me --> meth.
Los constructores son un tipo especial de métodos que no pueden ser llamados mediante CALL METHOD. Son llamados automáticamente para establecer el estado inicial de un nuevo objeto o clase. Hay dos tipos de constructores:
- Dependientes de instancia.
- Independientes de instancia o estáticos.
Son métodos con un nombre predefinido y para poder hacer uso de ellos han de ser declarados explícitamente en la clase. Se requiere un método constructor si después de crear una instancia de una clase debemos asignar recursos, inicializar atributos de una manera que no es posible para la cláusula VALUE de la sentencia DATA, modificar atributos estáticos o enviar mensajes que indiquen la creación de un nuevo objeto. No hay métodos destructores en los objetos ABAP.
5.- Asignación de referencias.
Es posible asignar referencias a distintas variables referenciadas mediante la sentencia MOVE. De esta manera se pueden tener varias variables diferenciadas apuntando al mismo objeto.
Cuando se asigna una referencia a una variable referenciada distinta sus tipos han de ser compatibles. Es necesario que tanto si usamos la sentencia MOVE o la asignación directa (=) que el sistema determine en el chequeo del la sintaxis que la asignación va a ser posible. Este mismo tipo de validación se aplica aplica cuando se pasan variables referenciadas como parámetros a procedimientos.
Si escribimos la sentencia cref1 = cref2 las dos referencias deben tener el mismo tipo. Es decir las dos referencias se refieren a la misma clase o bien la clase de cref1 ha de ser una clase predeterminada como vacía o sea OBJECT.
La clase object es una clase que 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 pero nunca podrán usarse para acceder a objetos.
 
 
 
Sobre el autor
Publicación académica de Francisco Compte Sanchez, en su ámbito de estudios para la Carrera Consultor ABAP.
Francisco Compte Sanchez
Profesión: Sap Business&integration Architect - España - Legajo: QQ38S
✒️Autor de: 105 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Consultor sap mm y sd con algún conocimiento abap a nivel de debug. quiero consolidar conocimientos técnicos para reforzar mi perfil profesional.
Certificación Académica de Francisco Compte