7/22/2019 Programacion Dirigida a Objetos (UML) ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS CON ( Parte I ) UML Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 1/76 7/22/2019 Programacion Dirigida a Objetos (UML) Por qué el software es inherentemente complejo? g g g g Complejidad del dominio del problema. Dificultad de administrar el desarrollo de procesos. Problemas al caracterizar el comportamiento de sistemas discretos. Flexibilidad posible a través del software. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 2 2/76 7/22/2019 Programacion Dirigida a Objetos (UML) Complejidad del Dominio del Problema Los usuarios y los desarrolladores tienen perspectivas diferentes sobre la naturaleza del problema y realizan distintas suposiciones sobre la naturaleza de la solución. Una complicación adicional frecuente es el cambio de los requerimientos del software del sistema. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 3 3/76 7/22/2019 Programacion Dirigida a Objetos (UML) Dificultad al Gestionar el proceso de Desarrollo La tarea fundamental del equipo desarrollo es dar vida a una ilusión de simplicidad y defender a los usuarios de una vasta y a menudo arbitraria complejidad. Asociado al tamaño del proyecto esta el equipo de desarrollo; un mayor número de miembros implica una comunicación mas compleja y difícil. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 4 4/76 7/22/2019 Programacion Dirigida a Objetos (UML) Consecuencias de la Complejidad ilimitada Cuanto más complejo sea el sistema, más abierto está al derrumbamiento total. Nuestro fracaso en dominar la complejidad del software lleva a proyectos retrasados, que exceden el presupuesto, y que son deficientes respecto a los requerimientos fijados. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 5 5/76 7/22/2019 Programacion Dirigida a Objetos (UML) Problemas al caracterizar el comportamiento de Stmas. Discretos Al ejecutarse el software en computadoras digitales, se tiene un stma. con estados discretos. Los stmas. discretos por su naturaleza tienen un nro. finito de estados posibles. Un evento puede sus corromper el estado del externo stma., porque diseñadores olvidaron tener en cuenta ciertas interacciones entre eventos. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 6 6/76 7/22/2019 Programacion Dirigida a Objetos (UML) Flexibilidad a través del software El software ofrece la máxima flexibilidad, por lo que un desarrollador puede expresar casi cualquier clase de abstracción. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 7 7/76 7/22/2019 Programacion Dirigida a Objetos (UML) Consecuencias de la Complejidad ilimitada Cuanto más complejo sea el sistema, más abierto está al derrumbamiento total. Nuestro fracaso en dominar la complejidad del software lleva a proyectos retrasados, que exceden el presupuesto, y que son deficientes respecto a los requerimientos fijados. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 8 8/76 7/22/2019 Programacion Dirigida a Objetos (UML) La tarea del equipo de desarrollo de software OO es ofrecer una ilusión de simplicidad http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 9 9/76 7/22/2019 Programacion Dirigida a Objetos (UML) Qué es Orientado a Objetos ? En 1erde lugar es una forma de pensar - una forma modelar una solución a un problema. En 2do lugar, es una extensión a las metodologías de desarrollo previas, semejantes a la programación estructurada. En 3er lugar la orientación a objetos reconoce que los procesos naturales de pensamiento humano obtienen muchas ventajas evolucionarias, y por lo tanto trata de darle un adecuado soporte. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 10 10/76 7/22/2019 Programacion Dirigida a Objetos (UML) Por qué la orientación a objetos ? Por la estabilidad del modelado respecto a las entidades del mundo real. Por la construcción iterativa facilitada por el acoplamiento débil entre componentes. Por la posibilidad de reutilizar elementos entre desarrollos, y Por la simplicidad del modelado en base a 5 conceptos fundamentales (objetos, mensajes, clases, herencia y polimorfismo). http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 11 11/76 7/22/2019 Programacion Dirigida a Objetos (UML) Qué propone la Orientación a Objetos ? A diferencia del método tradicional de la descomposición funcional, en la que hay que descomponer para comprender y componer para construir, Propone un método de descomposición, no basado únicamente en lo que hace el sistema, sino más bien en la integración de lo que el sistema es y hace. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 12 12/76 7/22/2019 Programacion Dirigida a Objetos (UML) Objetivos de la orientación a Objetos El modelado las propiedades estáticas dinámicas delde entorno en el que se defineny las necesidades, y que es llamado el ámbito del problema. Formalizar nuestra percepción del mundo y de los fenómenos que se dan en él, logrando elde espacio del problemacorresponder con el espacio la solución, preservando la estructura y el comportamiento del sistema analizado. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 13 13/76 7/22/2019 Programacion Dirigida a Objetos (UML) La fortaleza de la Orientación a Objetos Su capacidad de agrupar lo que se ha separado, construir lo complejo a partir de lo elemental y, sobre todo, de integrar estáticamente y dinámicamente los constituyentes de un sistema. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 14 14/76 7/22/2019 Programacion Dirigida a Objetos (UML) OO - Revolución Industrial Software Describe el movimiento era donde el software es compilado ahacia partiruna de objetos componentes reusables. Los componentes son internamente muy complejos pero simples para interactuar con ellos. Serán cajas negras. Es necesario progresar desde una era de paquetes de software donde unera proveedor construye el monoliticos, software total, a una en la que el software es ensamblado desde componentes y paquetes de muchos proveedores, similar a la forma en que se ensamblan autos y computadoras. http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Ing. Luis Zuloaga Rotta 15 15/76 7/22/2019 Programacion Dirigida a Objetos (UML) Cuáles son los beneficios de OO ? Reuso Calidad Modelamiento mundo real Resistencia a los cambios (fácil mantenimiento) Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 16 16/76 7/22/2019 Programacion Dirigida a Objetos (UML) Qué es un objeto ? ’’ Un objeto tiene estado, comportamiento, e identidad; la estructura y comportamiento de objetos similares son definidos en su clase común; los terminos instancia y objeto son intercambiables ’’. Grady Booch ’91 Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 17 17/76 7/22/2019 Programacion Dirigida a Objetos (UML) … Otro Concepto ’’ Un objeto es cualquier cosa a la que se le aplica un concepto, el que representa una idea o noción que nosotros compartimos y aplicable a ciertos objetos en nuestro conocimiento ’’. James Martin ’92 Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 18 18/76 7/22/2019 Programacion Dirigida a Objetos (UML) … Otro Concepto ’’ Nosotros definimos un objeto como un concepto, abstracción o cosa con un significado y límites bien definidos para el problema a manejar ’’. Rumbaugh ’91 Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 19 19/76 7/22/2019 Programacion Dirigida a Objetos (UML) Los Objetos El objeto es una unidad atómica formada por la unión de un estado y de un comportamiento. El objeto revela su verdadero papel y su verdadera responsabilidad cuando, por medio del envío de mensajes, se inserta es un escenario de comunicación. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 20 20/76 7/22/2019 Programacion Dirigida a Objetos (UML) Características de un Objeto OBJETO = ESTADO + COMPORTAMIENTO + IDENTIDAD Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 21 21/76 7/22/2019 Programacion Dirigida a Objetos (UML) El Estado Agrupa los valores instantáneos de todos los atributos de un objeto sabiendo que un atributo es una información que cualifica al objeto que la contiene. El estado evoluciona con el tiempo, es variable y puede verse como la consecuencia de sus comportamientos pasados. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 22 22/76 7/22/2019 Programacion Dirigida a Objetos (UML) El Comportamiento Agrupa todas las competencias de un objeto y describe sus acciones y reacciones. Cada átomo de comportamiento se llama operación. Las operaciones de un objeto se desencadenan a consecuencia de un estímulo externo, representando en forma de un mensaje enviado por otro objeto. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 23 23/76 7/22/2019 Programacion Dirigida a Objetos (UML) Estado y Comportamiento El estado y el comportamiento están relacionados: el comportamiento en un instante dado depende del estado actual, y el estado puede ser modificado por el comportamiento. “ Sólo es posible hacer aterrizar un avión si este está volando ....” Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 24 24/76 7/22/2019 Programacion Dirigida a Objetos (UML) La Identidad Distingue los objetos de forma no ambigua, independientemente de su estado. Distingue dos objetos en los que todos los valores de atributos son idénticos. La es undeconcepto, no identidad se representa manera específica en el modelado. Cada objeto posee una identidad de manera implícita. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 25 25/76 7/22/2019 Programacion Dirigida a Objetos (UML) Oid ( Object Identifier ) Cada objeto oid. El establece la identidad delposee objetoun y tiene lasoid siguientes características: • Constituye un identificador único y global para cada objeto dentro del sistema. • Es determinado en el momento de la creación del • objeto. Es independiente de la localización física del objeto, es decir, provee completa independencia de localización. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 26 26/76 7/22/2019 Programacion Dirigida a Objetos (UML) ... Oid ( Object Identifier ) • • • Es independiente de las propiedades del objeto, lo cual implica independencia de valor y de estructura No cambia durante toda la vida del objeto. Además, un oid no se reutiliza aunque el objeto deje de existir No se tiene ningún control sobre los oids y su manipulación resulta transparente Sin embargo, es preciso contar con algún medio para hacer referencia a un objeto utilizando referencias del dominio (valores de atributos). Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 27 27/76 7/22/2019 Programacion Dirigida a Objetos (UML) Categorías de comportamiento Los objetos interactúan para realizar las funciones de la aplicación. Según la naturaleza de las interacciones, es decir, según la dirección de los mensajes intercambiados, es posible describir de manera general el comportamiento de los objetos. Las tres categorías de comportamiento: los actores, servidores y agentes. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 28 28/76 7/22/2019 Programacion Dirigida a Objetos (UML) Los Objetos Actores Los actores son siempre objetos en el origen de una interacción. Son objetos activos, es decir,generalmente poseen un hilo de ejecución (thread) y son quienes pasan el testigo a los otros objetos. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 29 29/76 7/22/2019 Programacion Dirigida a Objetos (UML) Los Objetos Servidores Los servidores, por el contrario, nunca son el origen de una interacción, son siempre destinatarios de los mensajes. A menudo son objetos pasivos que esperan que otro objeto requiera de sus servicios. En ese caso, el flujo de control se pasa al servidor desde el objeto que envía el mensaje y se recupera tras la ejecución del servicio. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 30 30/76 7/22/2019 Programacion Dirigida a Objetos (UML) Los Objetos Agentes Los agentes reúnen las características de los actores y los servidores. CLIENTE AGENTE Estos objetos pueden interactuar con los otros todo momento, ya objetos sea poren iniciativa propia o a consecuencia de una solicitud externa. Los agentes aislan a los objetos clientes de los objetos servidores, introduciendo una indirección en el mecanismo de SERVIDORES propagación de los mensajes. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 31 31/76 7/22/2019 Programacion Dirigida a Objetos (UML) El concepto de mensaje La unidad de comunicación entre objetos se llama mensaje. El mensaje una relaciónes deel soporte de comunicación que vincula, de formaque dinámica, objetos han sidolos separados por el proceso de descomposición. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 32 32/76 7/22/2019 Programacion Dirigida a Objetos (UML) Formas de sincronización de mensajes La sincronización naturaleza de la comunicación y lasprecisa reglas la que rigen el paso de mensajes. Existen 5 categorías de mensajes: Simple Síncrono Esperado Cronometrado Asíncrono Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 33 33/76 7/22/2019 Programacion Dirigida a Objetos (UML) Tipos de Objetos g g Concretos: Persona-Carro-PC Roles: Doctor-Propietario-Maestro g Relacional: Sociedad-Hijo-Matrimonio Eventos: Venta-Compra-Arribo g Exponibles: Icono-Window-Imagen-Menú g Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 34 34/76 7/22/2019 Programacion Dirigida a Objetos (UML) Actividades iniciales del Análisis OO Observar las cosas del sistema real y determinar sus propiedades : Color Tamaño Forma Genealogía Relaciones a otras cosas. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 35 35/76 7/22/2019 Programacion Dirigida a Objetos (UML) Como identificar Objetos Siendo una abstracción de la realidad,uny objeto entendiendo que será una abstracción creada por un desarrollador para satisfacer necesidades de una aplicación, observe e identifique : Cosas tangibles Roles Incidentes o eventos Interacciones Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 36 36/76 7/22/2019 Programacion Dirigida a Objetos (UML) Qué es la Abstracción ? Es las víascombatimos fundamentales queuna los de humanos la por la complejidad. La abstracción surge del reconocimiento de las similitudes entre ciertos objetos, situaciones o procesos del mundo real, y en la decisión de concentrarse en esas similitudes e ignorar por el momento las diferencias. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 37 37/76 7/22/2019 Programacion Dirigida a Objetos (UML) La abstracción centra su atención en las características esenciales de un objeto en relación a la perspectiva del observador Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 38 38/76 7/22/2019 Programacion Dirigida a Objetos (UML) La Abstracción Es una facultad de los seres humanos que consiste en la identificación de las características comunes a un conjunto de elementos, hacia la descripción condensada de estas características en lo que se ha convenido en llamar una CLASE. El método de abstracción es arbitrario. Lo que permite que un objeto pueda ser visto a través de abstracciones diferentes. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 39 39/76 7/22/2019 Programacion Dirigida a Objetos (UML) Descubrimiento e invención g Con el descubrimiento se llega reconocer las abstracciones utilizadas por aexpertos del dominio; si el experto del dominio habla de g ella, entonces la abstracción suele ser importante. Mediante la invención, se crean nuevas clases y objetos que no son parte del dominio del problema pero que son útiles en el diseño e implantación. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 40 40/76 7/22/2019 Programacion Dirigida a Objetos (UML) Describiendo Objetos Después de identificar un objeto, secomo crea una abstracción para describir esta un conjunto de atributos y operaciones. Los atributos valores de datos relativos a un almacenan objeto. Ejemplo de atributos : Peso Tamaño Nro Identidad Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 41 41/76 7/22/2019 Programacion Dirigida a Objetos (UML) Describiendo Objetos Operaciones o métodos son actividades llevadas a cabo por un objeto como resultado de un evento. Ejemplo de actividades : Listar Facturas Calcular Volumen Totalizar Items Se describen relaciones a otros objetos. Ejemplo de relación : Factura pertenece a Cliente Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 42 42/76 7/22/2019 Programacion Dirigida a Objetos (UML) Atributo Es un valor deDiferentes dato válidoinstancias para los objetos en una clase. de objetos pueden tener el mismo o diferentes valores para un atributo dado. Cada nombre de atributo es único en una clase, regla que no necesariamente tiene que cumplirse para clases diferentes. Un atributo debería ser un valor de dato puro, no un objeto. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 43 43/76 7/22/2019 Programacion Dirigida a Objetos (UML) Seleccionando Atributos Definir atributos que son independientes de cualquier otro. Ejemplo de atributos dependientes : Una locomotora tiene los siguientes atributos Hecho en, y Motor tipo En el siguiente caso ellos son dependientes Hecho en puede ser General Electric u Otro Motor tipo es diesel si es hecho por GE, en cualquier otro caso es a gas. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 44 44/76 7/22/2019 Programacion Dirigida a Objetos (UML) Seleccionando Atributos ... La mejor solución es crear dos objetos: Locomotora_GE, y Otra_Locomotora Locomotora_GE tiene motor diesel. Otra_Locomotora tiene motor a gas. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 45 45/76 7/22/2019 Programacion Dirigida a Objetos (UML) Encontrar todos los Atributos Necesarios Los siguientes valores de datos de atributos no son útiles para identificar el objeto. Tiene puertas Tiene cilindros Usado por personas Valores de datos que deben conocerse para ayudar a identificar un objeto: Hecho por Ford Tiene un motor de 300HP Tiene seis cilindros Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 46 46/76 7/22/2019 Programacion Dirigida a Objetos (UML) Operaciones y Métodos Una operación es función transformación queuna puede ser o aplicada a o por objetos en una clase. Cada operación tiene un objeto destino como un argumento implícito. La misma operación puede aplicarse a muchas clases diferentes. Un método es la implementación de una operación para una clase. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 47 47/76 7/22/2019 Programacion Dirigida a Objetos (UML) Ejemplo de Operación y método La clase FILE tiene una operación PRINT. Diferentes métodos podrían ser implementados para imprimir archivos ASCII, archivos Txt y archivos de imágenes digitalizadas (BMP). Todos estos métodos lógicamente ejecutan la misma tarea, imprimir un FILE; esto es, nos podemos referir a ellos por la operación genérica PRINT, sin embargo cada método puede ser implementado por un diferente grupo de líneas de código. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 48 48/76 7/22/2019 Programacion Dirigida a Objetos (UML) Representación Gráfica de las CLASES Cada clase se representa bajo la forma de un rectángulo dividido en tres compartimentos. El primero contiene el nombre de la clase, el segundo los tributos y el tercero las operaciones. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Nombre Atributo 1 Atributo 2 Atributo 3 Operación 01 ( ) Operación 02 ( ) Motocicleta Color Cilindrada Velocidad maxima arrancar ( ) acelerar ( ) frenar ( ) Llenar tanque ( ) 49 49/76 7/22/2019 Programacion Dirigida a Objetos (UML) Las Clases La clase describe el ámbito de definición de un conjunto de objetos. Cada objeto pertenece a una clase. Las generalidades están contenidas en la clase y las particularidades están contenidas en los objetos. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 50 50/76 7/22/2019 Programacion Dirigida a Objetos (UML) Descripción de las CLASES La especificación : describede al las ámbito de definición y las propiedades instancias de esta clase, y que corresponde a la noción de tipo tal como se define en los lenguajes de programación clásicos La realización : describe cómo se realiza la especificación y contiene el cuerpo de las operaciones y los datos necesarios para su funcionamiento. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 51 51/76 7/22/2019 Programacion Dirigida a Objetos (UML) Qué es Encapsulación ? La abstracción y el encapsulamiento son conceptos complementarios: la primera se centra en el comportamiento observable de un se objeto, mientras encapsulamiento centra en la el implementación que da lugar a este comportamiento. Para que la abstracción funcione la implementación debe estar encapsulada. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 52 52/76 7/22/2019 Programacion Dirigida a Objetos (UML) El encapsulamiento oculta los detalles de la implementación de un Objeto Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 53 53/76 7/22/2019 Programacion Dirigida a Objetos (UML) Encapsulamiento De modo predeterminado, los valores de atributos de un objeto se encapsulan en el objeto y no puden ser manipulados directamente por los demás objetos. Todas las interacciones entre los objetos se efectúan invocando las diversas operaciones declaradas en la especificación de la clase y accesibles desde los demás objetos, de acuerdo a las reglas de visibilidad. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 54 54/76 7/22/2019 Programacion Dirigida a Objetos (UML) Reglas de Visibilidad Privada ( - ): visible sólo para la clase y para las clases amigas (C++). Protegida( # ): visible sólo para las clases derivadas (subclases). Pública ( + ): visible para todas las clases con las que esta asociada. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 55 55/76 7/22/2019 Programacion Dirigida a Objetos (UML) La Asociación Expresa una conexión semántica bidireccional entre clases. Una asociación es una abstracción de los enlaces que existen entre los objetos instancias de enlace Pedro: Alumno UNI : Universidad enlace UNFV: Universidad enlace Oscar: Alumno Juana: Alumno asociacion Universidad Alumno las clases asociadas. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 56 56/76 7/22/2019 Programacion Dirigida a Objetos (UML) Clarificación de la Asociación Para mejorar la legibilidad de los diagramas, la asociación puede ir acompañada por una forma verbal activa o pasiva. Es posible precisar el rol de una clase al interior de una asociación. Alumno < estudia en empleador Universidad Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml registra a > Universidad docente estudiante Persona 57 57/76 7/22/2019 Programacion Dirigida a Objetos (UML) Multiplicidad Los roles continen tambien una información de multiplicidad que precisa el número de instancias que 1 0..1 m..n * uno y sólo uno cero o uno de "m" a "n" muchos 0..* cero a muchos 1..* uno a muchos empleador participan en la relación. 1 Universidad Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml docente * 0..1 estudiante * Persona 58 58/76 7/22/2019 Programacion Dirigida a Objetos (UML) La Agregación Una relación expresa una forma de acoplamiento entre abstracciones. La fuerza del acoplamiento depende de la naturaleza de la relación en el ámbito del problema. De modo predeterminado, la asociación expresa un acoplamiento débil. La agregación es una forma particular de asociación que expresa un acoplamiento más fuerte entre clases. La agregación permite representar relaciones del tipo todo y partes o compuesto y componentes. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 59 59/76 7/22/2019 Programacion Dirigida a Objetos (UML) Representación de la agregación Se representa como una asociación, 1 con el añadido pequeño rombo colocadode alun lado del agregado. La agregación favorece la propagación de los valores de atributos y de operaciones del agregado hacia las partes o 1 Auto padre Persona 0..2 hijos componentes. Cuando la multiplicidad del agregado vale 1, la destrucción del agregado entraña la destrucción de las partes. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Motor * 60 60/76 7/22/2019 Programacion Dirigida a Objetos (UML) Las Jerarquías de CLASES Las jerarquías o clasificaciones permiten gestionar la complejidad ordenando los objetos dentro de árboles de clases de abstracción creciente. La generalización y la especialización son puntos de vista centrados en las Objetos e Objetos e Instancias Abstracción Civil ? Juan Pérez Rojas MUJER PERSONA ( Clase ) HOMBRE ( Sub Clase ) Luis Rojas Perez Militar jerarquías de clases. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 61 61/76 7/22/2019 Programacion Dirigida a Objetos (UML) La Generalización Consiste en factorizar los elementos comunes (atributos, operaciones y restricciones) de un conjunto de clases en una clase más general llamada superclase. Abstracciones más generales Vehículo Vehiculo terrestre Auto Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Camión Vehículo aéreo Avión Helicoptero 62 62/76 7/22/2019 Programacion Dirigida a Objetos (UML) La Especialización Vehículo Permite capturar las particularidades de un conjunto de objetos no discriminados por las clases ya identificadas. Las nuevas Vehiculo terrestre Auto características representan porseuna nueva clase, sub clase de una de las clases existentes. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Camión Vehículo aéreo Avión Helicoptero Extensión por especialización 63 63/76 7/22/2019 Programacion Dirigida a Objetos (UML) Propiedades de la Generalización La generalización solo afecta a las clases y significa : “es un” o “es una especie de”. Vehículo No establece indicación de ninguna multiplicidad. No es una relación reflexiva. No es una relación simétrica Es una relación transitiva. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml NO ...! Animal Ave Vehículo Mobil Canario NO ...! SI ...! 64 64/76 7/22/2019 Programacion Dirigida a Objetos (UML) Criterio para la Generalización Animal De las estructuras planteadas en la clasificación de los animales mostradas, ninguna de las soluciones es satisfactoria, porque de acuerdo a los modelos propuestos el fenómeno de covariación induce puntos de mantenimiento múltiples. Bípedo Herbívoro Carnivoro Herbivoro Carnivoro Covariación Animal Herbívoro Bípedo Cuadrúpedo Covariación Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Cuadrúpedo Carnívoro Bípedo Cuadrúpedo 65 65/76 7/22/2019 Programacion Dirigida a Objetos (UML) Generalización Múltiple Aporta una solución elegante para la construcción de clasificaciones con criterios independientes, Protección piel Bípedo Animal Nro patas Cuadrúpedo Alimentación Plumas Pelo Herbívoro Carnivoro Conejo díficiles ordenar.de Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Escamas 66 66/76 7/22/2019 Programacion Dirigida a Objetos (UML) La covariación no reducible En algunos casos la covariación existe por la propia naturaleza 1 Piloto 1 0..* 0..* Moto Licencia del ámbito de la aplicación. Esta forma de covariación no es reducible porque afecta a dos jerarquías Cross Taxi Cross Taxi Covariación no reducible distintas. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 67 67/76 7/22/2019 Programacion Dirigida a Objetos (UML) Como representaría una Metamorfosis ? Mariposa Mariposa 1 Estadío Oruga Crisálida Lepidoptero Es esto correcto ? NO ...! Oruga Crisálida Lepidoptero Esto es Correcto..! La generalización no está adaptada para representar las metamorfosis. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 68 68/76 7/22/2019 La Herencia Programacion Dirigida a Objetos (UML) Es una técnica de los lenguajes de programación para construir una clase a partir de una o varias otras clases, compartiendo atributos, operaciones y, en ocasiones, restricciones, dentro de una jerarquía de clases. Las clases hijos heredan las características de sus clases antecesoras; los atributos y las operaciones declaradas en la clase padre son accesibles en la clase hijo, como si se hubieran declarado localmente. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 69 69/76 7/22/2019 Programacion Dirigida a Objetos (UML) La Delegación en lugar de la herencia múltiple reemplazarse por la delegación. Animal La herencia no es una necesidad absoluta y siempre puede Patas Animal Bípedo Cuadrúpedo Alimento Animal Herbívoro Carnívoro La delegación presenta la ventaja de reducir el acoplamiento en el modelo: por una parte, el cliente no conoce directamente al proveedor, y por otra, el proveedor puede ser modificado sobre la marcha. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 70 70/76 7/22/2019 Programacion Dirigida a Objetos (UML) El Principio de la Sustitución La clasificación propaga el estado, el comportamiento y las restricciones. No existen medias tintas: todas las propiedades de la clase padre son válidas integramente en la clase hijo. El principio de la sustitución afirma que: “Debe ser posible sustituir cualquier objeto instancia de una subclase por cualquier objeto instancia de una superclase sin que la semántica del programa escrito en los términos de la superclase se vea afectada”. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 71 71/76 7/22/2019 El Polimorfismo Programacion Dirigida a Objetos (UML) Describe la característica de un elemento que puede tomar varias formas, como el agua que se encuentra en estado sólido, líquido o gaseoso. ?? Camine El polimorfismo de operación, desencadena operaciones diferentes en respuesta a un mismo mensaje. Cada subclase hereda de la especificación de las operaciones de sus superclases, pero tiene la posibilidad de modificar localmente el comportamiento de estas operaciones. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 72 72/76 7/22/2019 Objeto Iterador El diagrama siguiente Programacion Dirigida a Objetos (UML) representa una colección polimorfa. Todos los animales saben dormir, pero c/raza tiene su forma particular. Los mecanismos generales escritos según del la ZOO no especificación necesitan conocer los gustos particulares de cada raza para invocar la operación * Zoo Dormir ( ). Un iterador es un objeto asociado a una colección que permite visitar todos sus 1 Animal Dormir ( ) León Tigre Oso Dormir ( ) { Dormir ( ) { Dormir ( ) { Sobre el vientre } Sobre la espalda } En un arbol } elementos sin desvelar su estructura interna. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 73 73/76 7/22/2019 Programacion Dirigida a Objetos (UML) Operaciones del Iterador Iterador El iterador es activo cuando el Inicializar ( ) Siguiente ( ) Valor ( ) Terminado( ) control de la iteración se deja al usuario por medio de las 4 operaciones siguientes : Inicializar, permite tener en cuenta los elementos presentes en un momento dado en la colección. Siguiente, permite el paso al elemento siguiente. Valor, que devuelve el elemento actual. Terminado, que es verdad cuando todos los elementos han sido visitados. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml Zoo 1 * Animal Dormir ( ) León Tigre Oso 74 74/76 7/22/2019 Ejemplo de código utilizando Iterador Programacion Dirigida a Objetos (UML) Visita: iterador; UnAnimal: Animal; -- variable polimorfa ... La variable UnAnimal es polimorfa: Visita.Inicializar (elZoo); puede contener cualquier animal devuelto por la función Visita.Valor( ). While not Visita.Terminado( ) loop El envio del mensaje Dormir( ) al animal contenido por la variable UnAnimal desencadena una manera específica de dormir que depende de la subclase del animal. El mecanismo UnAnimal:= Visita.Valor( ); UnAnimal.Dormir( ); Visita.Siguiente( ); end loop; Zoose que duerme a los animales del que es independiente de los animales encuentran realmente en el Zoo en un momento dado Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 75 75/76 Violación del principio Sustitución 7/22/2019 Programacion Dirigida a Objetos (UML) El ejemplo precedente sólo funciona si cada Animal comprende el mensaje Dormir( ). Los mecanismos que implementan el polimorfismo manipulan objetos a través de las especificaciones de sus superclases. Para que el polimorfismo funcione efectivamente, es necesario que se verifique el PAJARO Plumas Pico Volar ( ) Volar ( ) { Esconder la cabeza } bajo tierra Aguila Gorrión Avestruz Lo mostrado no tiene consecuencias mientras nadie escriba un mecanismo general para manipular los pájaros. principio de sustitución. Ing. Luis Zuloaga Rotta http://slidepdf.com/reader/full/programacion-dirigida-a-objetos-uml 76 76/76