atributosprivados

¿Por qué no se debe acceder a los atributos de un objeto?

Un objeto cliente sólo debe requerir un dato de un objeto.... no debe requerir un atributo, de hecho no debe saber ni los atributos que el objeto tiene, de ahí que estos sean privados.

No se deben conocer los atributos por tres razones:

    • Se conocería la estructura de datos que almacena al dato (o a la información?). Si permitimos que otros objetos conozcan (= accedan) las estructuras de datos nunca podremos cambiarlas. P.e si la edad está almacenada en una estructura simple (un atributo tipo int) y mañana necesitamos que se almacenen las 10 últimas edades, siendo lo más recomendable un vector, tendremos que cambiar y buscar a todos los clientes que además tendrán que cambiar la manera de acceder al dato.

    • Se obviaría la manera de obtener la información, cosa que sólo sabe y sólo debe saber el objeto que mantiene la información. Un objeto puede devolvernos la edad y no tenerla calculada. Si hay un atributo edad y lo leemos nadie se responsabiliza de que lo que leemos este actualizado (si es un “get” el que nos lo proporciona si se puede asegurar coherencia). El no utilizar métodos de acceso a los atributos implica conocer la información que el objeto almacena

          • Hay información que almacena el objeto
          • Hay otra información que calcula cuando se la requiere.
          • Puede haber más métodos get que atributos.

    • Por otro lado con atributos privados se evita que aparezcan estructuras de datos centralizadas, de las que dependen muchos elementos, al estilo de la programación estructurada

No podemos olvidar que una cosa son los atributos del objeto y otra la información que este puede proporcionar: Información que puede proporcionar el objeto = Atributos + Cálculos con los Atributos

© Copyright Javier Garzás, all rights reserved. All material on this site is copyrighted. For articles attributed to named authors, they are the copyright of the corresponding authors. Any unattributed articles are copyright Javier Garzás. Please link freely to this site, but if you want to copy any of the materials you should contact the authors first.