Wiki pone mucha precisión
Abstracción de datos
resumen de los datos hace cumplir una clara separación entre las propiedades abstractas de un tipo de datos y los detalles concretos de su aplicación. Las propiedades abstractas son aquellas que son visibles para el código del cliente que hace uso del tipo de datos, la interfaz para el tipo de datos, mientras que la implementación concreta se mantiene completamente privada y puede cambiar, por ejemplo, para incorporar mejoras de eficiencia a lo largo del tiempo. La idea es que dichos cambios no tengan ningún impacto en el código del cliente, ya que no implican ninguna diferencia en el comportamiento abstracto. Por ejemplo, se podría definir un tipo de datos abstractos llamado tabla de búsqueda que asocie las claves de forma única con los valores y en los que se puedan recuperar los valores especificando sus claves correspondientes. Dicha tabla de búsqueda puede implementarse de varias maneras: como una tabla hash, un árbol de búsqueda binario, o incluso una simple lista lineal de pares (clave: valor). En lo que respecta al código del cliente, las propiedades abstractas del tipo son las mismas en cada caso.
Considere, por ejemplo, un ejemplo de fragmento de Java para representar algunos "animales" agrícolas comunes a un nivel de abstracción adecuado para modelar aspectos simples de su hambre y alimentación. Se define una clase de animales para representar tanto el estado del animal y sus funciones:
public class Animal extends LivingThing
{
private Location loc;
private double energyReserves;
public boolean isHungry() {
return energyReserves < 2.5;
}
public void eat(Food f) {
// Consume food
energyReserves += f.getCalories();
}
public void moveTo(Location l) {
// Move to new location
loc = l;
}
}
Con la definición anterior, se podría crear objetos de tipo animal y llamar a sus métodos de esta manera:
thePig = new Animal();
theCow = new Animal();
if (thePig.isHungry()) {
thePig.eat(tableScraps);
}
if (theCow.isHungry()) {
theCow.eat(grass);
}
theCow.moveTo(theBarn);
http://www.javacoffeebreak.com/faq/faq0084.html. –
@ crowso- ¿aún no está satisfecho con las respuestas? Por favor, acepte una de las respuestas –