lunes, 3 de diciembre de 2012

Conceptos Basicos del modelo orientado a Objetos
5.1 Reconocimiento de objetos y clases en el mundo real y la interacción entre ellos En Java, 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. 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 Observamos que en el aula hay varios objetos alumno, por lo que pensamos en el grupo de alumnos, al que denominaremos como la clase alumno. De igual manera, cada materia es impartida por un profesor; el conjunto de profesores forman la clase Profesor. Pudiéramos extender nuestro análisis al pizarrón, la mesa, la silla,, al conjunto de mesa bancos, etc. 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. 5.2 La abstracción y el encapsulamiento como un proceso natural Abstracción: 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. 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. 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: Proporcionó la primera posibilidad de ocultación de información. 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. Si nos concentramos en las cosas, podemos encapsular en un objeto nuestro entendimiento acerca de sus características y el comportamiento de ese objeto. Lo tratamos como una entidad definida y su comportamiento no esta disperso en nuestro diseño. Es decir, no separamos la viscosidad del aceite de su color sino creamos un objeto aceite y ponemos ambas características como característica de dicho objeto. 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. 5.3 La programación Orientada a Objetos (POO) y la complejidad del software La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita ver este tipo de programación. La complejidad del software se desarrolla mediante las personas que son hábiles para lo cual necesitan recopilar información necesaria es decir dominar la problemática del sistema para lo cual se ven enfocados al tratamiento del problema y después a gestionar un proceso mediante el cual desarrollaran el software y así atraves de eso podrán llevarlo a la practica hasta que atreves del usuario pueda tener la flexibilidad de probarlo, para lo cual el software y la poo tienen varias aplicaciones en la programación formando grandes estructuras de ellas En la historia de la programación ha habido varias evoluciones sucesivas. Una de las principales fue la programación estructurada, cuyo principio fundamental era dividir un programa en subprogramas más pequeños y fáciles de resolver, hasta llegar a niveles de complejidad elementales, siempre apoyándonos en la idea de ¿qué debe hacer el programa? Este método de diseño, a pesar de haber dado resultados satisfactorios, tiene limitaciones. Algunas de ellas son: • No favorece la reutilización del código. Si en la figura anterior f1 y f2 fue¬ran idénticas, este hecho seguramente pasaría desapercibido y no se comparti¬ría una única función fn. • Si dos subprogramas comparten una misma función fn reutilizando así el có¬digo que define la misma, y más adelante queremos modificar fn porque hay un cambio en uno de los subprogramas que la utilizan, la modificación afecta¬rá también al otro subprograma, razón por la que ahora tendremos que reali¬zar dos funciones. De lo expuesto se deduce que la programación tradicional se desarrolla a par¬tir de procedimientos y datos, sin delimitar qué procedimientos actúan sobre qué datos. Los datos se estructuran con el fin de que puedan ser procesados por un conjunto de procedimientos diferentes, por lo que ambos, estructuras de datos y procedimientos, están sujetos a cambios. Si la programación estructurada se interesa primero por los procedimientos y después por los datos, el diseño orientado a objetos se interesa en primer lugar por los datos, a los que se asocian posteriormente procedimientos. Esto es, ahora la ¬idea principal es ¿de qué trata el programa? Entonces se organizan los desarro¬llos alrededor de los datos manipulados, y no alrededor de las funcionalidades. Esta forma de construir el programa resulta mucho más eficaz puesto que en la vida de un programa los elementos más estables son los datos. Por lo tanto, en la programación orientada a objetos, un programa es una co¬lección de una sola entidad básica, el objeto, el cual combina los datos con los procedimientos que actúan sobre ellos. Durante la ejecución, los objetos reciben y envían mensajes a otros objetos para ejecutar las acciones requeridas. La programación orientada a objetos puede llevarse a cabo con lenguajes convencionales, pero esto exige al programador la construcción de los mecanis¬mos de que disponen los lenguajes orientados a objetos. Por ello, lo más apropia¬do es utilizar directamente un lenguaje orientado a objetos, ya que éstos soportan los mecanismos y las características que anteriormente se han expuesto, tales como objetos, clases, métodos, mensajes, herencia, etc. La herencia constituye uno de los mecanismos más potentes de la programación orientada a objetos.

No hay comentarios:

Publicar un comentario