domingo, 19 de febrero de 2012

1.1 Elementos del modelo de objetos

1.1 Elementos del modelo de objetos
Para descargar el tema en un archivo de word haga clic aquí

Programación Orientada a Objetos
La programación Orientada a Objetos es un método de implementación en el cual los programas están organizados como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son todas miembros de una jerarquía de clases unidas vía relaciones de herencia.
Aquí hay tres partes importantes:
La programación orientada a objetos:
1.    Usa objetos, no algoritmos, como bloques lógicos de construcción (jerarquía "parte de…").
2.    Cada objeto es instancia de alguna clase.

3.    Las clases están relacionadas entre sí vía relaciones de herencia (jerarquía "tipo de…").

Un programa puede parecer orientado a objetos, pero si alguno de los tres elementos falta, no lo es. Específicamente, la programación sin herencia no es orientada a objetos, más bien es programación con tipos abstractos de datos.
Diseño Orientado a Objetos
El énfasis en métodos de programación está primariamente en el uso adecuado y efectivo de mecanismos de lenguajes particulares. En contraste con esto, los métodos de diseño enfatizan la estructuración adecuada y efectiva de sistemas complejos.
Diseño orientado a objetos es un método de diseño que guía el proceso de descomposición orientado a objetos y define una notación para expresar tanto los modelos lógico (estructura de clase y objeto) y físico (arquitectura de módulo y proceso) (tanto estáticos como dinámicos).
Elementos del modelo de objetos
Paradigmas de programación.
Un estilo o paradigma de programación es una manera de organizar programas sobre la base de algún modelo conceptual de programación y de un lenguaje apropiado para hacer que lo programas sean escritos de una manera clara.  Hay principalmente cinco estilos (paradigmas) de programación.
Modelo
Tipo de Abstracción
Orientado a procedimientos
Algorítmico
Orientado a objetos
Clases y objetos
Orientado a lógicas Metas,
Cálculo de predicados
Orientado a reglas reglas
if-then
Orientado a restricciones
relaciones invariantes
No hay un único estilo de programación que sea el más adecuado para todo tipo de aplicaciones.
Cada uno de estos estilos tiene su propio marco conceptual, su manera diferente de pensar acerca del problema. Para el paradigma orientado a objetos, el marco conceptual es el modelo de objetos. Hay cuatro elementos principales en este modelo:
Abstracción
Las abstracciones son una manera fundamental que tenemos los humanos de manejarnos con la complejidad. Estas devienen del reconocimiento de las similaridades entre ciertos objetos, situaciones o procesos en el mundo real, y la decisión de concentrarse en estas similaridades ignorando las diferencias. Una abstracción es una descripción simplificada de un sistema que enfatiza algunos de sus detalles o propiedades mientras suprime otros. Una buena abstracción es la que enfatiza detalles que son significantes al lector, y suprime los que no lo son.
Una abstracción se enfoca sobre una vista externa del objeto, y sirve para separar su comportamiento esencial de su implementación.
Un cliente es un objeto que usa recursos de otro objeto. El comportamiento de un objeto se puede caracterizar por las operaciones que sus clientes pueden realizar sobre él, y las operaciones que él puede realizar sobre otros objetos. El conjunto de operaciones que un cliente puede requerir de un objeto define su protocolo.
Encapsulación
La abstracción de un objeto debería preceder a su implementación. Una vez que la implementación es seleccionada, esta debería tratarse como un secreto de la abstracción y ocultársela a la mayoría de los clientes.
Abstracción y encapsulamiento son conceptos complementarios: la abstracción enfoca la vista externa de un objeto, y el encapsulamiento (ocultamiento de la información) previene que los clientes vean la parte interna, donde el comportamiento de la abstracción es implementada.
Entonces, "El encapsulamiento es el proceso de ocultar todos los detalles de un objeto que no contribuyen a sus características esenciales."
Modularidad
Si bien el acto de particionar un programa en componentes individuales reduce en algún grado la complejidad, una razón más poderosa para realizarlo es que ésto crea un número de contornos bien documentados dentro del programa.
En algunos lenguajes, como por ejemplo Smalltalk, no existe el concepto de módulo, y la clase forma la unidad física de descomposición. En otros (Object Pascal, C++, Java), el módulo es una construcción separada. En estos lenguajes, las clases y los objetos forman la estructura lógica de un sistema; colocando estas abstracciones en módulos se produce la estructura física.
La mayoría de los lenguajes que soportan al módulo como un concepto separado, también distinguen entre la interface y la implementación del módulo.
Jerarquía
La abstracción es sin duda algo bueno, pero salvo en aplicaciones triviales, encontramos que hay más abstracciones diferentes que las que podemos comprender a un dado momento. El encapsulamiento nos ayuda a manejar esta complejidad ocultando la parte interna de estas abstracciones. La modularidad también ayuda, dándonos una manera de agrupar lógicamente abstracciones relacionadas. Esto no es suficiente. Un conjunto de abstracciones frecuentemente forman una jerarquía, e individualizándolas en nuestro diseño, simplificaremos el entendimiento del problema.
Con ésto, La jerarquía es un ordenamiento de abstracciones.
Las dos jerarquías más importantes en un sistema complejo son su estructura de clases (jerarquía tipo de) y la estructura de objetos (jerarquía parte de).

2 comentarios: