Diseño de Sistemas de Información Héctor Cuadra Diagrama de clases El Diagrama de Clase es el diagrama principal de análisis y diseño para un sistema. En él, la estructura de clases del sistema se especifica, con relaciones entre clases y estructuras de herencia. Durante el análisis del sistema, el diagrama se desarrolla buscando una solución ideal. Durante el diseño, se usa el mismo diagrama, y se modifica para satisfacer los detalles de las implementaciones. Ejemplo Mecanismos de abstracción Clasificación / Instanciación Composición / Descomposición Agrupación / Individualización Especialización / Generalización La clasificación es uno de los mecanismos de abstracción más utilizados. La clase define el ámbito de definición de un conjunto de objetos, y cada objeto pertenece a una clase, Los objetos se crean por instanciación de las clases. Cada clase se representa en un rectángulo con tres compartimientos: nombre de la clase atributos de la clase operaciones de la clase Clase Los atributos de una clase no deberían ser manipulables directamente por el resto de objetos. Por esta razón se crearon niveles de visibilidad para los elementos que son: (-) Privado : es el más fuerte. Esta parte es totalmente invisible (excepto para clases friends en terminología C++) (#) Los atributos/operaciones protegidos están visibles para las clases friends y para las clases derivadas de la original. (+) Los atributos/operaciones públicos son visibles a otras clases (cuando se trata de atributos se está transgrediendo el principio de encapsulación) Ejemplos Relaciones entre clases: Los enlaces entre objetos pueden representarse entre las respectivas clases y sus formas de relación son: Asociación y Agregación (vista como un caso particular de asociación) Generalización/Especialización. Las relaciones de Agregación y Generalización forman jerarquías de clases. Ejemplos (Asociación) La asociación expresa una conexión bidireccional entre objetos. Una asociación es una abstracción de la relación existente en los enlaces entre los objetos. Puede determinarse por la especificación de multiplicidad (mínima...máxima) Departamento dirige 0..1 1..1 Uno y sólo uno 0..1 Cero o uno M..N Desde M hasta N (enteros naturales) * Cero o muchos 0..* Cero o muchos 1..* Uno o muchos (al menos uno) director Profesor 1 Clase Asociación Una clase asociación (association class) es un elemento de modelado que tiene propiedades tanto de asociación como de clase. Una clase asociación puede ser vista tanto como una asociación que también tiene propiedades de clase, o como una clase que también tiene propiedades de asociación. Se representa gráficamente como una clase unida por una línea punteada a una asociación. Ejemplos (Clase Asociación) empleador trabajadores Empresa Empleado 1..* * Cargo nombre sueldo subordinado 1..* superior 0..1 Agregación. La agregación representa una relación parte_de entre objetos. En UML se proporciona una escasa caracterización de la agregación. Esta relación puede ser caracterizada con precisión determinando las relaciones de comportamiento y estructura que existen entre el objeto agregado y cada uno de sus objetos componentes. Composición Agregación disjunta y estricta : las partes sólo existen asociadas al compuesto (solo se accede a ellas a través del compuesto) dependencia Relación (mas débil que un asociación) que muestra la relación entre un cliente y el proveedor de un servicio usado por el cliente. Cliente es el objeto que solicita un servicio Servidor es el objeto que provee un servicio Gráficamente la dependencia se muestra como una línea discontinua con una punta de flecha que apunta del cliente al proveedor. ejemplo Generalización: Permite gestionar la complejidad mediante un ordenamiento taxonómico de clases, se obtiene usando los mecanismos de abstracción de Generalización y/o Especialización. La Generalización consiste en factorizar las propiedades comunes de un conjunto de clases en una clase más general. Los nombres usados: clase padre clase hija. Otros nombres: superclase - subclase, clase base - clase derivada. Las subclases heredan propiedades de sus clases padre, es decir, atributos y operaciones (y asociaciones) de la clase padre están disponibles en sus clases hijas. La Generalización y Especialización son equivalentes en cuanto al resultado: la jerarquía y herencia establecidas. Generalización y Especialización no son operaciones reflexivas ni simétricas pero sí transitivas. La especialización es una técnica muy eficaz para la extensión y reutilización. Ejemplos (Generalización) Trabajador { disjunta, completa } Directivo Administrativo Obrero Taxonomía de la clase vehículo Ejemplos Motor 1..4 1 Avión 1 n 1..2 1 n n Vuelo n { disjunta, completa } 1 Avión militar Vendedor de billetes Piloto Avión comercial Línea aérea { disjunta, completa } Avión de carga Avión de pasajeros 1 n Reserva