ocultación de datos

Arnoldo Francis
21 de Febrero del 2006
Alguien me puede explicar en que consiste la ocultación de datos en Java y cuales son sus ventajas?

Programer
21 de Febrero del 2006
Nos sirve para ocultar los datos

Diego
21 de Febrero del 2006
Nos permite hacer que el software sea más tolerante a los cambios. El ejemplo típico es el siguiente:
Mal diseño:
public class Persona{
public String nombre;
public byte edad;
}

Buen diseño:
public class Persona{
protected String nombre;
protected byte edad;

public String getNombre() {
return nombre;
}
public byte getEdad(){
return edad;
}
}
Me preguntarás ¿para qué quieres ocultar la información? Pues por ejemplo, imagina que quieres
hacer que la clase Persona, sea modificable. Con propiedades públicas ya lo es, pero también puedes asignarle a una persona una edad negativa, lo que puede generar comportamientos extraños realizar operaciones, como por ejemplo, calcular la media de las edades de las personas. Modificando mínimamente la clase o heredando de ella, se puede hacer que una Persona sea modificable. Otro ejemplo. Imagina que quieres que objetos de la clase Persona se almacenen en disco. Mientras se almacena y se recupera una Persona puede que haya cambiado su edad, de modo que la clase mal diseñada sería incoherente. Sin embargo un objeto de la clase bien diseñada o una subclase de la misma, puede añadir una propiedad Date fechaNacimiento y redefinir el método getEdad de modo que reste la fecha actual a la fecha de nacimiento y devuelva la diferencia. Por ello se recomienda que se empleen propiedades privadas, protegidas si van a accederse de subclases o dentro del paquete y públicas en muy pocas ocasiones. Espero haberte aclarado la ventaja del ocultamiento de datos.