✒️ABAP POO Tratamiento de Objetos

Publicación Académica por Oscar Perez

Publicación Académica creada y compartida por Oscar Perez para el tema Tratamiento de Objetos.

Dentro del ámbito de estudios: Máster ABAP POO / Unidad 1: Introducción a la Programación Orientada a Objetos en ABAP.

¿Buscás una carrera con Futuro?

ABAP POO Tratamiento de Objetos por Oscar Perez

Unidad-1-Lección-9: Tratamiento de Objetos 1) Utilización de los componentes de un objeto

Los programas sólo pueden acceder a los componentes de las instancias usando las referencias de las variables referenciadas, siguiendo las sintaxis, siendo r_vehiculo la variable referenciada:

· Para acceder el atributo color realizamos lo siguiente:

r_vehiculo->color.

· Para llamar al método de instancia encendido realizaremos lo siguiente:

CALL METHOD r_vehiculo->encendido().

O la versión reducida, omitiendo el CALL METHOD:


r_vehiculo=>encendido().

Nota: Cuando llamamos a un método de instancia desde dentro de otro método de instancia, se puede omitir la referencia de objeto.

Veamos un ejemplo:

DATA: r_vehiculo TYPE REF TO vehiculo,
marca TYPE string,
modelo TYPE string,
numero TYPE i.

START-OF-SELECTION.

CREATE OBJECT r_vehiculo.

r_vehiculo->obtener_tipo( IMPORTING ex_marca = marca
ex_modelo = modelo ).

Para los componentes estáticos o independientes de instancia, sólo 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 de que un objeto de la clase haya sido creado.

Siendo vehiculo la clase, la sintaxis es la siguiente:

· Para acceder el atributo estático color realizamos lo siguiente:

vehiculo->color.

· Para llamar al metodo estático encendido realizamos lo siguiente:

CALL METHOD vehiculo=>encendido().

o la versión reducida omitiendo el CALL METHOD:

vehiculo=>encendido().

Nota: Cuando llamamos a un método estático desde dentro de la clase, se puede omitir el nombre de la clase.

Veamos un ejemplo:

DATA: numero TYPE i.

....

vehiculo=>obtener_n_o_vehiculos( RECEIVING re_contador = numero ).

Audio Tip 1: Un objeto que requiere el servicio de otro objeto le envía un mensaje solicitando el servicio a este otro. Este mensaje menciona la operación a ser ejecutada. La implementación de esta operación es conocida como método. Cuando escribimos la sintaxis de un método, debemos tener en cuenta que no se deben dejar espacios en blanco entre el nombre del método y los paréntesis dentro de los cuales se almacenaran los parámetros del mismo. Por el contrario, si debemos dejar al menos un espacio en blanco entre los paréntesis.

2) Métodos Funcionales

Los métodos funcionales son aquellos que tienen un parámetro RETURNING. Esto significa que devuelven un valor. El parámetro RETURNING siempre debe ser pasado usando la adición VALUE, es decir, se debe pasar por valor.

Los métodos funcionales pueden ser llamados directamente dentro de varias expresiones:

· Expresiones Lógicas: IF, ELSEIF, WHILE, WAIT

· Condiciones CASE: CASE, WHEN

· Expresiones Aritméticas: COMPUTE

· Fuentes de valores como copia local: MOVE

· Condiciones de búsqueda para tablas internas, asumiendo que el operando no es un componente de la fila: LOOP AT … WHERE

Veamos un ejemplo de declaración de un método funcional:

CLASS vehiculo DEFINITION.

PUBLIC SECTION.

METHODS: obtener_consumo_promedio IMPORTING im_distancia TYPE i
im_combustible TYPE i
RETURNING VALUE(re_combustible) TYPE i.

ENDCLASS. "VEHICULO DEFINITION

DATA: r_vehiculo1 TYPE REF TO vehiculo,
r_vehiculo2 TYPE REF TO vehiculo,
consumo_promedio_comb TYPE i.
....

consumo_promedio_comb = r_vehiculo1->obtener_consumo_promedio( im_distancia = 500 im_combustible = 50 )
+ r_vehiculo2->obtener_consumo_promedio( im_distancia = 600 im_combustible = 60 ).

3) Autoreferencia

Dentro de una clase se puede acceder también a los componentes individuales mediante la referencia a sí mismo ME:

· Para acceder al atributo color en la propia clase, realizaremos lo siguiente:

me->color.

· Para llamar al método encendido en la propia clase, realizaremos lo siguiente:

CALL METHOD me->encendido().

Veamos el siguiente ejemplo:

CLASS vehiculo DEFINITION.

PUBLIC SECTION.
METHODS asignar_tipo IMPORTING im_marca TYPE string
.....
PRIVATE SECTION.
DATA: marca TYPE string.

ENDCLASS.

CLASS vehiculo IMPLEMENTATION.
METHOD asignar_tipo.
DATA: marca TYPE string.

me->marca = im_marca.
TRANSLATE me->marca TO UPPER CASE.

ENDMETHOD.
ENDCLASS.

Audio Tip 2: En los objetos ABAP las autoreferencias están siempre predefinidas, pero solamente son útiles en ciertos contextos. Podemos referenciar un objeto utilizando la variable de referencia predefinida ME dentro de los métodos de instancia. Aunque en dichos métodos no es necesario utilizar la autoreferencia ME, podemos utilizarla igualmente para mejorar la legibilidad del código. Sin embargo, nos es sumamente útil cuando necesitamos que haya una clara diferencia entre los objetos de datos locales y los atributos de instancia que llevan el mismo nombre.

 

:: Al igual que Oscar ¿Usted está dispuesto a aprender ABAP?

El lunes 24 Junio 2019 comenzamos la 🎓Carrera Programador ABAP.
Juntos para realizar sus más grandes desafíos!

 Cargando presentación, aguarde unos instantes...

✒️Más Publicaciones Académicas sobre Tecnología SAP

Buscador de Publicaciones:


 

Recursos Free:

Los mejores recursos Libres y Gratuitos compartidos con la comunidad: