Diagrama de clases
Transcripción
Diagrama de clases
Programación Orientada a Objetos Diagrama de Clases I: asociaciones Ing. Julio Ernesto Carreño Vargas MsC. Concepto de diagrama de clases Modelo de Dominio Un modelo conceptual explica los conceptos más significativos en un dominio del problema, identificando los atributos y las asociaciones Se representa mediante un grupo de diagramas de estructura estática, en este caso un diagrama de clases (con atributos y asociaciones pero sin métodos) Programación Orientada a Objetos 3 Modelo de Diseño Un diagrama de clases muestra un resumen de un sistema a través de clases (con atributos y métodos) y las relaciones entre dichas clases. Son los diagramas más comunes en el modelado y programación de sistemas orientados a objetos Programación Orientada a Objetos 4 Elementos de un Diagrama de Clase Se representan: para cada clase: atributos, métodos y visibilidad relaciones entre clases (ej: composición, herencia, interfaces) Programación Orientada a Objetos 5 Características de los Diagramas de Clases Son estáticos muestran qué elementos interactuan pero no qué sucede cuando ellos hacen la interacción. Los diagramas de clase son importantes para: visualización, especificación y documentación del modelo estructural construcción de sistemas ejecutables. Programación Orientada a Objetos 6 Clase OO Nombre Atributos Métodos Programación Orientada a Objetos 7 Relaciones entre los objetos objAho Cuenta objCliente Programación Orientada a Objetos Cliente Relaciones pueden ser de: Asociación Agregación Composición Dependencia Herencia 8 Relaciones entre Clases Representan asociaciones del mundo del problema. Existen varios tipos de relaciones: Asociación Agregación Composición Dependencia Generalización(Herencia) Las relaciones tienen ciertas características: roles, cardinalidad, navegabilidad Programación Orientada a Objetos 9 Asociaciones entre clases Programación Orientada a Objetos 10 Asociación Relación general entre 2 clases que finalmente será también relación entre sus objetos Programación Orientada a Objetos 11 Detectando asociaciones Hay una asociación entre dos clases si una instancia de una clase debe conocer de la otra para poder ejecutar su trabajo El cajero necesita del dispensador para que aquel entregue el dinero al cliente ó para que le informe la capacidad de billetes. Programación Orientada a Objetos 12 Asociación recursiva Pueden existir relaciones de asociación entre la misma clase. Programación Orientada a Objetos 13 Cardinalidad de asociaciones entre clases Programación Orientada a Objetos 14 Cardinalidad(1) La cardinalidad o multiplicidad de una relación es el número de posibles instancias de la clase asociada con una simple instancia de la otra clase. Las cardinalidades pueden ser: 1 Exactamente una instancia * Sin límite de instancias 0..1 Cero o una instancia 0..* Sin límite de instancias incluido 0 1..* Al menos una instancia Programación Orientada a Objetos 15 Cardinalidad(2) Por cada “Cliente” existen muchos objetos de tipo “Orden” Por cada “Orden” existe 0 ó 1 “Cliente” (cardinalidad por defecto cuando no se indica) Programación Orientada a Objetos 16 Navegabilidad de asociaciones entre clases Programación Orientada a Objetos 17 Navegabilidad (o direccionalidad) La Asociación es una conexión que tiene direccionalidad, esto es, las clases involucradas en la relación se navegan en determinado sentido. Programación Orientada a Objetos 18 Navegabilidad-Direccionalidad Una flecha de navegabilidad en una asociación muestra en cual dirección la asociación puede ser recorrida ó consultada. La navegabilidad también dice quien es el propietario de la implementación de la asociación. Las asociaciones sin flechas de navegabilidad son bidireccionales Programación Orientada a Objetos 19 Relación Unidireccional Cada “DetalleOrden” conoce su “Producto”, pero cada “Producto” NO conoce de que “DetalleOrden” es. Programación Orientada a Objetos 20 Relación Bidireccional Cada “Cliente” conoce el conjunto de objetos “Orden” asociados, y cada “Orden” conoce su “Cliente” Programación Orientada a Objetos 21 Roles en la asociación entre clases Programación Orientada a Objetos 22 Roles Una relación tiene dos puntos finales, cada uno puede tener un nombre de rol para clarificar la naturaleza de la asociación Un cliente “solicita” muchas ordenes y una orden “estaAsociada” a un cliente. una persona es “empleado” de una compañía, una compañía es el “empleador” de una persona. Los roles son opcionales (para mayor claridad) Si no se colocan roles, los nombres de los atributos asumen este papel. Programación Orientada a Objetos 23 Asociaciones expresadas en Java Programación Orientada a Objetos 24 Relación de Asociación UniDireccional Si la relación es navegable y la cardinalidad de la clase destino es 0..1, entonces: En la clase fuente, se coloca un atributo privado de la clase destino. Programación Orientada a Objetos 25 Relación de Asociación UniDireccional Clases Java Bus.java Programación Orientada a Objetos Conductor.java 26 Accessors (get, set) y Constructor de “Bus” Programación Orientada a Objetos 27 Accessors y Constructor de “Conductor” (no conoce a Bus) Programación Orientada a Objetos 28 Relación de Asociación Bidireccional Si la relación es bidireccional, esto es, navegable en ambos sentidos y la cardinalidad en ambos sentidos es 1 Se coloca un atributo privado en cada clase que haga referencia a la otra clase. Programación Orientada a Objetos 29 Relación de Asociación Bidireccional Programación Orientada a Objetos 30 Relación de Asociación Bidireccional Clases Java Programación Orientada a Objetos 31 Accessors y Constructor de “Bus” Programación Orientada a Objetos 32 Accessors y Constructor de “Conductor” Programación Orientada a Objetos 33 Bibliografía UML y patrones una introducción al análisis y diseño orientado a objetos y al proceso unificado. Larman, Craig Paul Deitel. Como programar en Java 7/e. Pearson Education. 2007. 12- Booch, G., Rumbaugh, J. y Jacobson, I. El Lenguaje Unificado de Modelado UML, CAPITULO 8, Pearson Educación, Segunda Edición 2006. Programación Orientada a Objetos 34