Programación orientada a objetos. Visibilidad de los atributos y métodos.
Quinta entrada acerca de la programación orientada a objetos, en esta entrada hablaremos la visibilidad de los atributos y métodos.
Hasta ahora sabemos que una clase puede tener un número indeterminado de atributos y/o métodos y que es conveniente que la clase oculte toda la información que no es relevante para su uso, para favorecer la modularidad.
Y que, cuanta menos información pública tenga una clase, menos probable será que se propaguen los cambios que hacemos.
Si seguimos estas reglas de diseño contribuímos a incrementar factores de calidad, como son reutilización, portabilidad y facilidad del uso de las clases.
Veamos detenidamente qué trataremos hoy:
Un objeto siempre puede acceder a cualquier atributo o método de la clase a la que perteece y usarlo sin restricción. Para poder establecer la visibilidad de los atributos y métodos, los lenguajes de programación definen 3 niveles de acceso.
- Público: Cualquier clase puede acceder a cualquier atributo o método declarado como público y usarlo
- Protegido: Cualquier clase hija puede acceder a cualquier atributo o método declarado como protegido en su clase madre y usarlo
- Privado: Ninguna clase puede acceder a un atributo o método declarado como privado y usarlo
Veamos un ejemplo en Java:
Class Alumno {
{
// atributos
private String nombre;
private String apellido;
private int edad;
// métodos de acceso
public void setNombre(String pNombre) {
nombre = sacarNombre(pNombre);
apellido = sacarApellido(pNombre);
}
public void setEdad(int pEdad){
edad = pEdad;
}
public String toString(){
return(nombre + " tiene " + edad + " años.");
}
}
En UML las clases se representan con una tabla dividida en 3 partes, nombre de la clase, atributos de la misma, y métodos de la misma. La visibilidad de estos atributos y métodos se representa mediante símbolos:
- “+”: Público
- “#”: Protegido
- “-”: Privado
En resumen:
La visibilidad de atributos y métodos en la POO nos ayuda a incrementar factores de calidad, como son reutilización, portabilidad y facilidad del uso de las clases.
Nos ayudará a que podamos reutilizar código sin miedo a que esa reutilización nos “desmonte el chiringuito” ;-)
Saludos!


