Múltiples referencias apuntando al mismo objeto

Múltiples referencias apuntando al mismo objeto
Otro concepto que tenemos que tener claro es el de múltiples referencias que apuntan al mismo objeto.
Cuando asignamos una referencia de un objeto a otras referencias no se crean en memoria copias de la misma instancia, sino que todas las referencias van  a apuntar a la misma instancia y cualquier modificación que efectúa una referencia repercute en todas las demás.
Veamos en un ejemplo creando la clase CL_TARIFAS que tiene el atributo TARIFA_SERVICIO_MEDICO.
CLASS cl_tarifas DEFINITION.
  PUBLIC SECTION.
    DATA tarifa_servicio_medico TYPE i.
ENDCLASS.
Ahora declaramos tres referencias de la clase creada e instanciamos un objeto en la primera referencia.
DATA: gr_1 TYPE REF TO cl_tarifas,
gr_2 TYPE REF TO cl_tarifas,
gr_3 TYPE REF TO cl_tarifas.
  CREATE OBJECT gr_1.
Asignamos las últimas dos referencias a la referencia que apunta a la instancia creada.
gr_2 = gr_1.
gr_3 = gr_1.
Con esta asignación no tenemos en memoria tres instancias, sino que una instancia y tres referencias que apuntan a la misma instancia.
Asignamos un valor al atributo TARIFA_SERVICIO_MEDICO sobre la primera referencia GR_1.
gr_1->tarifa_servicio_medico = 30.
La modificación sobre la primera referencia afecta a todas las referencias, debido a que solo tenemos una instancia.
Si escribimos en pantalla con WRITE el valor del atributo en todas las referencias, obtenemos el mismo valor asignado por la primera referencia.
WRITE: / gr_1->tarifa_servicio_medico,
/ gr_1->tarifa_servicio_medico,
/ gr_1->tarifa_servicio_medico.
Entonces, podemos decir que en orientación a objetos si asignamos una referencia a otra referencia no creamos una copia del objeto, sino que las dos referencias van a apuntar a la misma instancia y cualquier modificación que se realiza sobre el objeto afecta a todas las referencias.
Para entenderlo mejor, en este articulo creamos la clase CL_PRECIO_PRODUCTO con el atributo público PRECIO en un programa ejecutable. En el evento START-OF-SELECTION declaramos dos referencias de la clase e instanciamos un objeto que apunta en la primera referencia. Con una sentencia de asignación indicamos que la segunda referencia apunta al mismo objeto. Modificamos el valor del atributo PRECIO con la segunda referencia y comprobamos el valor del mismo atributo en la primera referencia.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Suscríbete al blog
Recibe las últimas actualizaciones y contenidos exclusivos directamente en tú correo electrónico.
Inscribime
close-link