Fundamentos de programación/La Abstracción y el Encapsulamiento

Abstracción

editar

La abstracción, un principio por el cual se aísla toda aquella información que no resulta relevante a un determinado nivel de conocimiento.

Abstracción: Es una descripción de especificación que enfatiza algunos de los detalles o propiedades de algo. La abstracción consiste en captar las características esenciales de un objeto, así como su comportamiento. Es un método por el cual abstraemos valga la redundancia, una determinada entidad de la realidad de sus características y funciones que desempeñan, estos son representados en clases por medio de atributos y métodos de dicha clase.

Ejemplos de abstracción

editar

Ejemplo 1: ¿Qué características podemos abstraer de los automóviles? o ¿Qué características semejantes tienen todos los automóviles?

Características: Marca, Modelo, Número de chasis, Peso llantas o cauchos, Puertas, Ventanas... Comportamiento: Acelerar, Frenar, Retroceder...

Ejemplo 2: La gerencia de un taller mecánico necesita un sistema para controlar los vehículos que ingresan a sus instalaciones. En este caso, las características esenciales de la clase vehículo son: Marca, Modelo, Color, Falla detectada, Nombre del Propietario, Dirección del Propietario, Teléfono del Propietario...

A esto se le llama abstracción. En general un programa no es más que una descripción abstracta de un procedimiento o fenómeno que existe o sucede en el mundo real.

  • La abstracción es crucial para comprender este complejo mundo.
  • La abstracción es esencial para el funcionamiento de una mente humana normal y es una herramienta muy potente para tratar la complejidad.
  • La abstracción es clave para diseñar un buen software.

Procedimientos

editar

Modulos

editar

Es una técnica que proporciona la posibilidad de dividir sus datos y procedimientos en una parte privada y una parte pública. Proporcionan un método efectivo de ocultación de la información, pero no permiten realizar instanciación, que es la capacidad de hacer múltiples copias de las zonas de datos.

Tipo abstracto de dato

editar

Un tipo abstracto de dato (TAD) es un tipo de dato definido por el programador que se puede manipular similarmente a los tipos de datos definidos por el sistema. Un tipo abstracto de dato corresponde a un conjunto (puede ser de tamaño indefinido) de valores legales de datos y un número de operaciones primitivas que se pueden realizar sobre esos valores. Para construir un tipo abstracto de dato se debe:

1. Exponer una definición del tipo.

2. Hacer disponible un conjunto de operaciones.

3. Proteger los datos asociados con el tipo.

4. Permitir instancias múltiples del tipo.

Encapsulamiento

editar

Consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto en una sola entidad.

En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstracción. La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas rojas donde sólo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesará conocer que hace la Clase pero no será necesario saber cómo lo hace.

Ejemplos

editar

Ejemplo 1: De un televisor, el usuario conoce su apariencia y parte de su funcionamiento. Sólo le importa que funcionen el selector de canales, el video y el audio; no le interesa saber cómo funciona cada una de las partes internas del aparato, ese detalle sólo le interesan al fabricante y al técnico de servicio.


Ejemplo 2: De un animal no sólo es necesario conocer su apariencia; también se requiere conocer qué sabe hacer y cómo reacciona ante determinadas situaciones.


Caja Negra: Un objeto en el que su comportamiento y atributos son conocidos pero no así su trabajo interno, el cual continua siendo un misterio.