Escuela de Ingeniera Industrial Pontificia Universidad Catlica de Valparaso, Chile fguidi@ucv.cl Franco Guidi Polanco (PUCV-EII) 2 Qu es UML? UML (Unified Modeling Language) es un lenguaje visual para crear modelos de sistemas. UML fue desarrollado por el trabajo conjunto de los Tres Amigos Est compuesto por distintos diagramas, para apoyar distintas etapas de desarrollo: Anlisis Diseo Instalacin (deployment) Franco Guidi Polanco (PUCV-EII) 3 Los Tres Amigos Grady Booch Jim Rumbaugh Ivar Jacobson Franco Guidi Polanco (PUCV-EII) 4 Por qu usar UML? UML es principalmente una herramienta de comunicacin: con uno mismo con los miembros de un equipo de desarrollo con el cliente Ventajas de utilizarlo: Permite capturar adecuadamente los requerimientos Apoya correcta comprensin de un sistema por parte de distintos miembros de un proyecto de desarrollo Franco Guidi Polanco (PUCV-EII) 5 Diagramas de UML Casos de Uso Clases Objetos Statechart Actividades Secuencia Colaboracin Componentes Franco Guidi Polanco (PUCV-EII) 6 Diagrama de clases de UML Describe las clases y muestra las relaciones entre ellas. Tipos de relaciones: Is-a: una clase es del tipo de otra clase Asociaciones entre clases: Una clase contiene a otra clase (Has-a) Agregacin Composicin Una clase usa otra clase (Uses-a) Una clase crea a otra clase Franco Guidi Polanco (PUCV-EII) 7 Representacin de clases MiClase MiClase La figura de la izquierda muestra el smbolo para una clase en su forma completa, y el de la derecha en su forma abreviada. Por convencin, los nombres de clases comienzan con maysculas y deben estar escritos con letra de tipo bold en sus smbolos. Franco Guidi Polanco (PUCV-EII) 8 Representacin de clases (II) En la forma completa del smbolo: El compartimento superior est destinado al nombre de la clase. El compartimento del medio muestra los atributos de la clase. El compartimento inferior muestra las operaciones. MiClase Franco Guidi Polanco (PUCV-EII) 9 Atributos Los atributos representan informacin acerca de un objeto. El trmino atributo no es exactamente sinnimo de variable. Un atributo representa una propiedad definida en trminos abstractos, mientras que una variable es el mecanismo de implementacin del atributo. nombre: String fechaDeNacimiento: date altura: float Atributos Persona Franco Guidi Polanco (PUCV-EII) 10 Operaciones Se ubican en el compartimento inferior de las clases. Persona getNombre():String setNombre(nombre:String) ... getEdad():integer getAltura():float setAltura(altura:float) nombre: String fechaDeNacimiento: date altura:float Operaciones Franco Guidi Polanco (PUCV-EII) 11 Operaciones sobrecargadas Las operaciones sobrecargadas aparecen varias veces en el smbolo de la clase (en cada ocasin con diferente cantidad o tipo de argumentos). Una de las versiones de la operacin rebajarPrecio reduce el precio del producto en una cantidad predeterminada y la otra recibe un porcentaje de descuento. Producto precio: float ... registrarVenta(fecha:Date, numUnidades:int) rebajarPrecio() rebajarPrecio(descuento: Porcentaje); Franco Guidi Polanco (PUCV-EII) 12 Visibilidad de atributos y operaciones UML aade un prefijo a las operaciones y atributos para indicar su visibilidad: + para atributos y operaciones pblicas . # para atributos y operaciones protegidas. - para atributos y operaciones privadas. Si se omite el prefijo, se asume que el atributo u operacin es pblica. Franco Guidi Polanco (PUCV-EII) 13 Atributos y operaciones de clases Los atributos y operaciones de clase (aquellos que no pertenecen a una instancia en particular sino que son compartidos por toda la clase) se representan en UML subrayados. Registra el nmero de rdenes de compra creadas. Obtiene en nmero de rdenes de compra creadas. OrdenDeCompra - NumeroDeOrdenes: int ... +getNumeroDeOrdenes():int ... Franco Guidi Polanco (PUCV-EII) 14 Operaciones y clases abstractas Polgono {abstract} El nombre de una clase abstracta debe estar en estilo itlico o con la indicacin {abstract}. Las operaciones abstractas tambin deben estar en estiloitlico o con la indicacin {abstract}. +getArea():float {abstract} ... area:float ... Polgono +getArea():float... area:float ... Franco Guidi Polanco (PUCV-EII) 15 Generalizacin: Herencia simple Una jerarqua de herencia se muestra utilizando flechas que apuntan hacia arriba en la jerarqua (en el ejemplo: Automvil y Camin son subclases de VehculoMotorizado). VehculoMotorizado Camin Automvil Franco Guidi Polanco (PUCV-EII) 16 Camin Automvil VehculoMotorizado Otro estilo para mostrar una jerarqua de herencia. Generalizacin: Herencia simple (II) Franco Guidi Polanco (PUCV-EII) 17 Generalizacin: Herencia mltiple VehculoMotorizado Camin Automvil AparatoVolador Avin UML permite mostrar herencia mltiple (cuando una clase hereda directamente de ms de una superclase). En el ejemplo, un Avin es un AparatoVolador y un VehculoMotorizado. Franco Guidi Polanco (PUCV-EII) 18 Asociaciones Una asociacin caracteriza un cierto tipo de relacin que puede darse entre instancias de determinadas clases. Por ejemplo, si tenemos las clases Persona y Perro, las siguientes relaciones podran darse entre sus instancias: J uan es propietario de Fido Pedro es propietario de Rintintn Pedro es propietario de Lassie Franco Guidi Polanco (PUCV-EII) 19 Asociaciones (II) La asociacin muestra que existe una relacin de propiedad entre personas y perros, por la cual una persona puede ser propietario de cero o ms perros y un perro es propiedad de una nica persona. Persona Perro Propiedad DePerro propietario 1..1 0..* propiedad Franco Guidi Polanco (PUCV-EII) 20 Asociaciones (III) Cada asociacin se muestra como una lnea entre dos clases. El nombre de la asociacin aparece en la lnea. El rol de cada clase en la asociacin aparece al lado de la clase, al final de la lnea. La multiplicidad de la asociacin tambin aparece al final de la lnea. Franco Guidi Polanco (PUCV-EII) 21 Ejemplo de asociaciones Persona Empresa Ciudad Empleo U b i c a c i o n R e s i d e n c i a 0..* 0..* 0..* 0..1 1..1 1..* empleado residente empleador Franco Guidi Polanco (PUCV-EII) 22 Ejemplo de asociaciones (II) Como las empresas emplean personas, existe una asociacin entre las clases Empresa y Persona. El nombre de esta asociacin es Empleo. El rol de la persona es el de empleado en la asociacin de empleo. Una persona puede ser empleada en 0 1 empresas (0..1); una empresa puede emplear a 0 o ms personas (0..*). Franco Guidi Polanco (PUCV-EII) 23 Ms sobre asociaciones No es obligatorio poner nombres a las asociaciones. Sin embargo es recomendable (se nombran con un sustantivo singular). No es necesario poner nombres de roles tampoco. La multiplicidad en un diagrama puede ser debatible, depende de lo que interese representar en el modelo. Puede existir ms de una asociacin entre un par de clases. Asimismo, una clase puede tener una asociacin consigo misma. Franco Guidi Polanco (PUCV-EII) 24 Asociaciones representadas como clases Persona Perro Propiedad DePerro 1..1 0..* propietario propiedad Persona Perro 1..1 0..* PropiedadDePerro ... ... propietario propiedad Franco Guidi Polanco (PUCV-EII) 25 La asociacin PropiedadDePerro se ha promovido a una nueva clase, conectada a la asociacin con una lnea punteada. Promover una asociacin a clase permite anexarle atributos y operaciones propias. En el ejemplo, la clase PropiedadDePerro, puede registrar la fecha en que un perro fue adquirido por una cierta persona (atributo fechaDeAdquisicion). Asociaciones como clases (II) Franco Guidi Polanco (PUCV-EII) 26 Navegabilidad de asociaciones Las asociaciones con cabeza de flecha muestran que existe un link directo desde un objeto de una clase al otro, lo que permite un acceso rpido. Persona Perro Propiedad DePerro 1..1 0..* Persona Perro Propiedad DePerro 1..1 0..* Persona Perro Propiedad DePerro 1..1 0..* Franco Guidi Polanco (PUCV-EII) 27 Cola Fuselaje Avion Ala Composicin Permite expresar que un objeto se compone de otros objetos. Por ejemplo, un Avin se compone de un Fuselaje, una Cola y dos Alas (una a cada lado). cola fuselaje alaIzquierda alaDerecha 1 1 1 1 Franco Guidi Polanco (PUCV-EII) 28 Composicin (II) La asociacin entre el objeto compuesto y sus constituyentes se denota con un una lnea con diamante relleno en el extremo del objeto compuesto. El rol del constituyente aparece en el extremo del constituyente de la asociacin (un objeto constituyente puede jugar ms de un rol). Debe mostrarse la multiplicidad en el extremo del constituyente de la asociacin. Franco Guidi Polanco (PUCV-EII) 29 Composicin (III) El objeto compuesto no existe sin sus componentes. Un objeto constituyente puede formar parte de solo un objeto compuesto a la vez. La composicin suele ser heterognea: los componentes suelen ser de distintas clases (cola, fuselaje, etc.). Franco Guidi Polanco (PUCV-EII) 30 Avin Aeropuerto Agregacin Permite expresar que un objeto agrupa a otros objetos. Por ejemplo, un Aeropuerto contiene al conjunto de Aviones que en su loza se encuentran. 0..* 1 Franco Guidi Polanco (PUCV-EII) 31 Agregacin (II) La asociacin entre el agregado y sus constituyentes se denota con un una lnea con diamante abierto (no relleno) en el extremo del agregado. El rol del constituyente aparece en el extremo del constituyente de la asociacin. Debe mostrarse la multiplicidad en ambos extremos de la asociacin. Franco Guidi Polanco (PUCV-EII) 32 Agregacin (III) El objeto agregado puede existir potencialmente sin sus objetos constituyentes. Un objeto constituyente puede ser parte de ms de uno agregado. La agregacin tiende a ser homognea: los objetos constituyentes son de la misma clase. Franco Guidi Polanco (PUCV-EII) 33 Creacin Se pude representar la idea que una clase es creada por otra utilizando la etiqueta <<create>>: GeneradorDeClientes ... Cliente getInstance():Cliente Cliente ... ... <<create>> Diagrama de Objetos de UML Franco Guidi Polanco Escuela de Ingeniera Industrial Pontificia Universidad Catlica de Valparaso, Chile fguidi@ucv.cl Franco Guidi Polanco (PUCV-EII) 35 Diagrama de Objetos Muestran fotografas de los objetos pertenecientes a un sistema, en un momento determinado. Sirven, por ejemplo, para ejemplificar la configuracin de objetos. Franco Guidi Polanco (PUCV-EII) 36 Representacin Los smbolos son anlogos a los de las clases, pero en el compartimento del nombre se usa el estilo subrayado y no bold. El nombre del objeto adopta la sintaxis nombreDeInstancia: NombreDeClase. Si no se tiene un buen nombre para un objeto se puede dejar annimo, por ejemplo, :NombreDeClase es una notacin aceptable. Pueden incluirse valores de los atributos que se estime convenientes miObjeto:MiClase miObjeto:MiClase Franco Guidi Polanco (PUCV-EII) 37 Ejemplo informtica:Departamento Mario:Empleado rut=1.111.111-k seguridad:Proyecto cdigo =MN-1245 fecha inicio =12/03/2006 nuevoPortal:Proyecto cdigo =YX-3321 fecha inicio =01/10/2004 :LiquidacinSueldo pago=1.350.000