domingo, 20 de mayo de 2012

UNIDAD III: Programación Orientada a Objeto


Técnicas y Desarrollo de Prototipos

Un prototipo representa un modelo del comportamiento de un sistema propuesto. Su aplicación resuelve la incertidumbre sobre si el diseño del producto se ajusta realmente a las necesidades del usuario. Su uso, en la etapa de desarrollo del ciclo de vida de un producto, ayuda a los diseñadores a tomar provecho de la información suministrada por los usuarios, permiitendoles hacer un bueno y sano sobre:
·         La necesaria funcionalidad del sistema
·         Secuencia operacional
·         Necesidades de dar soporte al usuario
·         Utilidad de las representaciones gráficas requeridas
·         Operatividad de la interfaz

En el ambiente de los diseños de sistemas de información, varios tipos de prototipos han sido desarrollados, para tomar ventaja de los diferentes tipos de información:
·         Requerimiento de animación: Permite que un posible requerimiento sea demostrado en un software, permitiendo a su vez ser evaluado por un usuario.
·         Prototipo Rápido: Ayda a recopilar información sobre requirimiento y adaptabilidad de posibles diseños. Se reconoce que los requerimientos sean probablemente imprecisos cuando son especificados en su primera vez. El enfasis se centra en evaluar el prototipo antes de tomar una decisión de implementar otra idea.
·         Prototipo Incremental: Permite que grandes sistemas sean instalados por fases para evitar retrasos entre las etapas de especificación y entrega del producto. El sistema es construido incrementalmente una fase a la vez. En este tipo de prototipo, el cliente y el proveedor del sistema acuerdan la realización del desarrollo del producto por etapas. Esto permite que los requerimientos sean chequeados e inspeccionadops en el área de trabajo y los cambios realizados tan pronto sean posibles, para adecuarlos a las necesidades. Cualquier cambio adicional menos importante puede ser realizado mas adelante.
·         Prototipo Evolucionario: Es la forma mas extensiva de prototipo. Representa un compromiso entre la producción del producto y el diseño del prototipo. El prototipo inicial es construido, evaluado y desarrollado continuamente hasta el producto final.
En ambientes de diseño de interfaz usuario-computador, se pueden encontrar los siguientes tipos:
·         Prototipo completo: Contiene una completa funcionalidad, pero con una baja capacidad operativa.
·         Prototipo horizontal: Contiene toda la funcionalidad de los niveles altos del sistema, pero obvia detalles de los niveles bajos.
·         Prototipo Vertical: Contine toda la funcionalidad de los niveles altos y bajos del sistema, pero restrnge parte de el .
·         Prototipo de alta fidelidad: Refiere a un prototipo que involucra un medio como video, sonido, etc., en la que se utiliza la interfaz final tan cercano a a la realidad como sea posible.
·         Prototipo de baja fidelidad: Usa materiales de baja calidad, muy distantes a la versión final y que tiende por lo general a ser muy económicos y rápidos de desarrollar.
·         Prototipos conducido: Involucra al usuario observando a un miembro del equipo desarrollador construyendo el sistema. Es una manera de probvar si la interfaz del sistema reune las necesidades del usuario sin que él tenga acción con el sistema.
·         Prototipos Mago de Oz (Wizard of Oz): Similar al anterior, pero en este caso el usuario no esta conciente de que está siendo observado por un miembro del equipo desarrollar. El usuario interactua con el sistema, pero en lugar de recibir asesoria del sistema, un miembro del equipo ubicado en otro equipo responde las inquietudes del usuario.
Limitaciones
·         Usuarios frecuentemente no tienen la habilidad para imaginar que decisión tomar, con respecto al diseño del sistema.
·         Usuarios frecuentemente no tienen la capacidad para hacer comentarios técnicos sobre el diseño del producto, proceso o sistema. 



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 soltarnos un poco con este tipo de programación.

Elementos de POO:
  • Objetos: Entender que es un objeto es la clave para entender cualquier lenguaje orientado a objetos. Existen muchas definiciones que se le ha dado al Objeto. Primero empecemos entendiendo que es un objeto del mundo real. Un objeto del mundo real es cualquier cosa que vemos a nuestro alrededor. Digamos que para leer este artículo lo hacemos a través del monitor y una computadora, ambos son objetos, al igual que nuestro teléfono celular, un árbol o un automóvil.
Analicemos un poco más a un objeto del mundo real, como la computadora. No necesitamos ser expertos en hardware para saber que una computadora está compuesta internamente por varios componentes: la tarjeta madre, el chip del procesador, un disco duro, una tarjeta de video, y otras partes más. El trabajo en conjunto de todos estos componentes hace operar a una computadora.
Internamente, cada uno de estos componentes puede ser sumamente complicado y puede ser fabricado por diversas compañías con diversos métodos de diseño. Pero nosotros no necesitamos saber cómo trabajan cada uno de estos componentes, como saber que hace cada uno de los chips de la tarjeta madre, o cómo funciona internamente el procesador. Cada componente es una unidad autónoma, y todo lo que necesitamos saber de adentro es cómo interactúan entre sí los componentes, saber por ejemplo si el procesador y las memorias son compatibles con la tarjeta madre, o conocer donde se coloca la tarjeta de video. Cuando conocemos como interaccionan los componentes entre sí, podremos armar fácilmente una computadora.
¿Qué tiene que ver esto con la programación? La programación orientada a objetos trabaja de esta manera. Todo el programa está construido en base a diferentes componentes (Objetos), cada uno tiene un rol específico en el programa y todos los componentes pueden comunicarse entre ellos de formas predefinidas.
Todo objeto del mundo real tiene 2 componentes: características y comportamiento.
Por ejemplo, los automóviles tienen características (marca, modelo, color, velocidad máxima, etc.) y comportamiento (frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc.).
  • Atributos: Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables. Las variables de instancia también denominados miembros dato, son declaradas en la clase pero sus valores son fijados y cambiados en el objeto. Además de las variables de instancia hay variables de clase, las cuales se aplican a la clase y a todas sus instancias. Por ejemplo, el número de ruedas de un automóvil es el mismo cuatro, para todos los automóviles.
  • Mensaje: Un objeto es inútil si está aislado. El medio empleado para que un objeto interactúe con otro son los mensajes. Hablando en términos un poco más técnicos, los mensajes son invocaciones a los métodos de los objetos. Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasándole el mensaje ponte en marcha. Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que deseamos invocar. miCoche.ponerseEnMarcha() En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar paréntesis igual que cualquier llamada a una función, dentro irían los parámetros.
  • Clase: Los objetos están organizados en familias claramente delimitadas. Una familia se reconoce porque reúne un grupo de objetos que heredan elementos entre sí. El modelo de programación visual, al igual que la naturaleza, organiza los objetos en clases (familias), así una clase es el conjunto de objetos que pertenecen a una misma familia. Por ejemplo Madonna, Michael Jackson, Prince y Dire Straits son objetos de una clase cantantes de rock, sin embargo personas específicas con nombres específicos son miembros de esa clase si poseen ciertas características comunes. El modelo de programación visual permite así organizar las familias de objetos en un orden jerárquico. En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro teléfono celular es sólo uno de los miles que hay en el mundo. Si hablamos en términos de la programación orientada a objetos, podemos decir que nuestro objeto celular es una instancia de una clase conocida como "celular". Los celulares tienen características (marca, modelo, sistema operativo, pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas, enviar mensajes multimedia, transmisión de datos, etc.).Definición teórica: La clase es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de cierta clase. También se puede decir que una clase es una plantilla genérica para un conjunto de objetos de similares características. Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad no existe diferencia entre un objeto y una instancia. Sólo que el objeto es un término más general, pero los objetos y las instancias son ambas representación de una clase. Definición Teórica: Una instancia es un objeto de una clase en particular. 
Características de la POO: 
  • Abstracción: La abstracción consiste en captar las características esenciales de un objeto, así como su comportamiento. Por ejemplo, volvamos al ejemplo de los automóviles, ¿Qué características podemos abstraer de los automóviles? O lo que es lo mismo ¿Qué características semejantes tienen todos los automóviles? Todos tendrán una marca, un modelo, número de chasis, peso, llantas, puertas, ventanas, etc. Y en cuanto a su comportamiento todos los automóviles podrán acelerar, frenar, retroceder, etc. En los lenguajes de programación orientada a objetos, el concepto de Clase es la representación y el mecanismo por el cual se gestionan las abstracciones.
  • Encapsulamiento: El encapsulamiento consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstracción y el ocultamiento que veremos a continuación.
La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesará será conocer qué hace la Clase pero no será necesario saber cómo lo hace.
  • Polimorfismo: El polimorfismo se presenta cuando se ha creado objetos que pertenecen a clases que han sido derivadas de otras clases. En otras palabras, el polimorfismo aparece en las clases derivadas.
También se dice que el polimorfismo es la propiedad que indica literalmente, la posibilidad de que una entidad tome muchas formas, en términos prácticos el polimorfismo permite referirse a objetos de clases distintas mediante el mismo elemento de programa y realizar la misma operación de diferentes formas, según sea el objeto que se referencia en ese momento. Por ejemplo cuando se describe la clase mamíferos se puede observar que la operación comer es una operación fundamental en la vida de los mamíferos, de modo que cada tipo de mamíferos debe poder realizar la operación o función comer. Por otra parte, una vaca o una cabra que pasta en el campo, un niño que se come un bombón o caramelo y un león que devora a otro animal, son diferentes formas que utilizan los distintos mamíferos para realizar la misma función (comer).
  • Herencia: La herencia es uno de los conceptos más cruciales en la POO. La herencia básicamente consiste en que una clase puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y métodos propios, tiene incorporados los atributos y métodos heredados de la superclase. De esta manera se crea una jerarquía de herencia. las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple. 

No hay comentarios:

Publicar un comentario