domingo, 13 de septiembre de 2009

1.2. La Abstracción y el Encapsulamiento como proceso natural

Abstracción: Es un método por el cual abstraemos, las características esenciales de un objeto, sus características y funciones que desempeñan, estos son representados en clases por medio de atributos y métodos de dicha clase. La abstracción es clave para diseñar un buen software.
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

Ejemplo: La abstracción de un automóvil.
- Características: Color, año de fabricación, modelo, etc.
- Métodos o Funciones: Frenar, encender, etc.
Módulos: 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.

TADS: 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: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción.
En la OO el encapsulamiento de una entidad se logra mediante la definición de una clase, que reúne los datos y comportamiento en una unidad.


El encapsulamiento nos permite considerar a los objetos como cajas negras: como objetos que podemos utilizar sin enfocarnos en la forma en que trabajan.

Caja negra.- Un objeto en el que su comportamiento y atributos son conocidos pero no así su trabajo interno, el cual continúa siendo un misterio.
Un mecánico debe saber como trabaja el motor y la transmisión de su carro, pero usted como conductor, puede usarlo sin preocuparse por estos detalles, El carro encapsula todos los detalles de las partes que lo constituyen, por lo que usted tan solo necesita conocer su interfaz: el acelerador, el freno y el volante.
Si abre la caja negra de su carro y se fija en lo que hay bajo el cofre, no encontrara una masa amorfa de características, sino subobjetos simples que interactúan entre si: motor, transición, poleas, etc. Si abre alguno de estos objetos encontrará más objetos, por ejemplo, el motor esta construido por bujías, tubos, bandas, convertidores catalíticos, etc. Y cada uno de ellos contiene a su vez objetos más pequeños que cumplen con una tarea específica.
Cuando el motor le da propulsión al carro, no hace todo el trabajo en un solo objeto monolítico. En vez de ello, delega a los objetos que lo constituyen una responsabilidad, A su vez, estos objetos pueden delegar responsabilidades a otro. De esta manera, el motor delega la acumulación de presión a los pistones y la responsabilidad de generar la chispa a las bujías.





sábado, 12 de septiembre de 2009

1.1. Reconocimiento de clases de objetos y sus relaciones en el mundo real.


Un objeto se define como una estructura que encapsula atributos (características) y comportamientos (procedimientos) de una entidad con un papel bien definido en una aplicación.
Un objeto es sencillamente un tipo abstracto de datos al que se añaden importantes inovaciones en comparticion de código y reutilizacion. Los mecanismos básicos de orientacion a objetos son: objetos, mensajes y métodos, clases e instancias y herencia.

Cada objeto tiene:
- Estado: Conjunto de valores de los atributos en un instante de tiempo dado. El comportamiento de un objeto puede modificar el estado de este.
- Comportamiento: Relacionado con su funcionalidad y determina las operaciones que este puede realizar o a las que puede responder ante mensajes enviados por otros objetos.
- Identidad: Es la propiedad que permite a un objeto diferenciarse de otros. Generalmente esta propiedad es tal, que da nombre al objeto.
Los objetos, concretos y abstractos, están a nuestro alrededor, forman nuestro entorno. Podemos distinguir cada objeto en base a sus características y comportamientos.
Por ejemplo, en un aula de clases observamos los siguientes objetos:

• Alumno
• Profesor
• Mesa
• Silla
• Mesa banco
• Pizarrón


Interacción entre objetos: Los objetos no sólo tienen atributos relacionados con su forma física sino que, además, exhiben comportamientos específicos de su clase.

• Alumno: Estudia, aprende.
• Profesor: Enseña, evalúa.
• Mesa: Ordenada, desordenada.
• Silla: Ocupada, desocupada.
• Mesa banco: Ocupado, desocupado.
• Pizarrón: Pintado, borrado

Interacción entre objetos: Los objetos no sólo tienen atributos relacionados con su forma física sino que, además, exhiben comportamientos específicos de su clase.

Clases: Es la definición de un objeto. Cuando se programa un objeto y se definen sus características y funcionalidades, realmente se programa una clase.
La programacion orientada a objetos (POO) se suele conocer como un nuevo paradigma de programacion. Otros pradigmas conocidos son: el paradifma de la programacion imperativa (con lenguajes tales como pascal o C), el paradigma de la programacion lógica (PROLOG) y el paradigma de programacion funcional (Lisp). El significado de paradigma (paradigma en latin; paradeigma en griego) en su origen significaba un ejemplo ilustrativo, en particular enunciado modelo que mostraba todas las inflexiones de una palabra.
La orientacion a objetos puede describirse como el conjunto de disciplinas que desarrollan y modelizan software que facilitan la construccion de sistemas complejos a partir de componentes.
El atractivo intuitivo de la orientacion a objetos es que proporciona conceptos y herramientas con los cuales se modela y representa el mundo tan fielmente como sea posible. Las ventajas de la orientacion a objetos son muchas en programacion y modelacion de datos.