Académique Documents
Professionnel Documents
Culture Documents
Diagramas de Clases
Un diagrama de clases muestra un resumen de un sistema mostrando sus clases y las relaciones entre ellas. Son los diagramas ms comunes en el modelado de sistemas orientados a objetos.
Diagramas de Clase
Son estticos, muestran que elementos interactan pero no que sucede cuando ellos hacen la interaccin. Contiene elementos esenciales para entender la vista del problema. Visualizacin, Especificacin y documentacin del modelo estructural Construccin
Ingeniera hacia adelante e ingeniera inversa.
Clases
La notacin de clase de UML es un rectngulo dividido en tres partes :
Nombre de la clase: cada clase tiene un nombre nico (La convencin son nombres en mayscula combinada y en singular) Atributos : Caractersticas propiedades de la clase. Operaciones: qu puede hacer la clase.
Clases
En cuanto a visibilidad, la clase puede ser pblica, en cuyo caso se declara public, de otro modo slo se conocer en el archivo donde se encuentre. Tambin existe visibilidad a nivel de paquete.
Operaciones
Las operaciones tienen la forma:
<visibilidad> <nombre> (<lista de parmetros)> : <tipo de retorno> La lista de parmetros tiene el tipo del parmetro y el nombre, y van separados por comas.
Operaciones
Las operaciones pueden ser:
Estticas: esto es, se pueden utilizar sin instanciar un objeto, en el diagrama estas operaciones van subrayadas
Atributos
Los atributos tienen la forma:
<visibilidad> <tipo> <nombre>
Constructores: llevan el mismo nombre de la clase y pueden tener sobrecarga. Mtodos Modificadores (mtodos set<atributo>) que cambian el valor de un atributo. (no se muestran en el diagrama). Mtodos Analizadores (mtodos get<atributo>) que devuelven el valor de un atributo. (no se muestran en el diagrama).
El atributo puede tener un valor inicial. Puede existir visibilidad a nivel de paquetes Si el atributo es esttico va subrayado.
Atributos
Se deben evitar los atributos pblicos por que violan el concepto de encapsulamiento Una clase puede tener cualquier nmero de atributos o no tenerlos
Clase en UML
Order -status:int -date:String +calcTotal:double +calcTax:double +cancel:void
Relaciones
Las relaciones entre las clases son los links conectndolos. Recuerde: las relaciones se convertirn en atributos de las clases. Existen varias clases de relaciones:
Asociacin Agregacin Composicin Generalizacin ( Herencia) Dependencia
Asociacin
Una relacin entre instancias de dos clases Hay una asociacin entre dos clases si una instancia de una clase debe conocer de la otra para poder ejecutar su trabajo Es una conexin bidireccional , esto es, ambas se conocen. Sin embargo es deseable restringir la navegacin a una direccin (ver navegabilidad).
Asociacin
Se presenta cuando dos clases son independientes Pueden existir relaciones de asociacin entre la misma clase En un diagrama se representa como un lnea conectando dos clases
Asociacin
En el siguiente ejemplo la clase Orden conoce el cliente y el cliente conoce sus rdenes
Order Customer -name:String -address:String 1 0..* -status:int -date:String +calcTotal:double +calcTax:double +cancel:void
Asociacin
Otros ejemplos:
Universidad Estudiante Persona Compaa Persona Persona Departamento Profesor Biblioteca - Libro
Cardinalidad
La cardinalidad o multiplicidad de una relacin es el nmero de posibles instancias de la clase asociada con una instancia de la otra clase. Las cardinalidades pueden ser:
0..1 n..m 0..* 1 1..* 2,4,6 Cero o una instancia n a m instancias Sin lmite de instancias incluido 0 Exactamente una instancia Al menos una instancia Exactamente 2,4 o 6 instancias
Cardinalidad
La cardinalidad >= 1 establece una restriccin de existencia. En el ejemplo anterior una orden tiene un cliente, y el cliente puede tener 0 ms ordenes sin lmite.
Navegabilidad (Direccionalidad)
Muestra en cual direccin la asociacin puede ser recorrida consultada Indica quien es el propietario de la implementacin de la asociacin Las asociaciones sin flechas de navegabilidad son bidireccionales
Navegabilidad
OrderDetail -taxStatus:int -quantity:int +calcWeight:double +calcSubTotal:double 0..* 1
Navegabilidad
En el ejemplo anterior, una detalle de orden puede ser consultado sobre su tem (producto), pero no al contrario, el tem no sabe de que detalle de orden es, pero el detalle de orden sabe sus productos.
Roles y Calificadores
Una relacin define roles que juega cada clase: Ej: una persona es empleado de una compaa, una compaa es el empleador de una persona. Una relacin tiene dos puntos finales, estos pueden tener un nombre de rol para clarificar la naturaleza de la asociacin. Los calificadores describen la relacin. Por ejemplo un cliente tiene muchas ordenes y una orden est asociada a un cliente. Un mdico conoce a sus pacientes, una biblioteca guarda libros. Persona trabaja para la compaa.
Roles y Calificadores
Los roles y los calificadores junto con la navegabilidad son opcionales y se colocan en el diagrama para clarificarlo. Otro ejemplo: Hombre y Mujer, los roles seran el hombre es el marido y la mujer es la esposa, los calificadores seran un hombre tiene una mujer y una mujer tiene un hombre. Se puede tener un solo calificador con direccin para la relacin. Por ejemplo, si se tiene una clase aerolnea y una clase vuelo se podra tener un calificador programa desde aerolnea a vuelo.
Roles y Calificadores
Person
Person
Person
Relacin de Agregacin
Una asociacin en la cual una clase pertenece a una coleccin, un objeto es parte de un todo. (tiene un) Distingue una parte de un todo. La multiplicidad en el todo es diferente de 1. Una agregacin tiene una punta de diamante sin rellenar hacia la parte que contiene el todo. En el siguiente ejemplo un equipo tiene una coleccin de personas, est conformado por personas.
Relacin de Agregacin
Persona
Relacin de Agregacin
Otros ejemplos:
Polgono Punto Compaa Departamento Edificio - Apartamento Almacn - Cliente
Relacin de Composicin
Es una asociacin fuerte (pertenencia fuerte) en la cual la parte pertenece a un todo, ella no puede existir sin el todo El tiempo de vida del todo es por lo general igual que el de la parte
Pertenece al objeto con que se relaciona, nace y muere con l (dependencia existencial)
Relacin de Composicin
Los objetos contenidos no son compartidos, esto es, no hacen parte del estado de otro objeto La multiplicidad en el lado todo es 0,1 y en el lado parte un intervalo. La composicin es denotada por una punta de diamante rellena hacia la parte del todo.
Relacin de Composicin
Order -status:int -date:String 1 +calcTotal:double +calcTax:double 1..* +calcWeight:double +calcSubTotal:double OrderDetail -taxStatus:int -quantity:int
Relacin de Composicin
Otros ejemplos:
Almacn Cuentas Departamento Habitacin Carro Ruedas Mano - Dedos
Relacin de Generalizacin
Indica que una clase es una superclase de otra (es un) Implica el factorizar las propiedades comunes de un conjunto de clases en una clase ms general La generalizacin tiene un tringulo apuntando a la superclase En el siguiente ejemplo pago es una superclase de efectivo, cheque y crdito.
Relacin de Generalizacin
Payment -amount:double
Relacin de Generalizacin
Ejemplo 1
Superclase: trabajador Subclases: directivo, administrativo, servicios.
Cash -cashTendered:double
Ejemplo 2
Superclase: vehculo Subclase: barco, avin, camin.
Relacin de Generalizacin
El Principio de Sustitucin de Liskow (1987) afirma que: Debe ser posible utilizar cualquier objeto instancia de una subclase en el lugar de cualquier objeto instancia de su superclase sin que la semntica del programa escrito en los trminos de la superclase se vea afectado.
Relacin de Dependencia
Es una relacin entre dos clases en la cual un cambio en una puede forzar cambios en la otra. Relacin entre dos cosas en la cual el cambio de una de las cosas (la parte independiente) afecta la semntica de la otra cosa (parte dependiente) Por lo general ocurre cuando la clase independiente es utilizada (como parmetro) o creada dentro de un mtodo de la clase dependiente. La clase dependiente no es un atributo de la clase independiente
Relacin de Dependencia
En el siguiente ejemplo la clase Operaciones de compaa depende de compaa, cuando la ltima cambie aquella tambin debe cambiar.
Paquetes
Son usados para agrupar elementos Observe las relaciones de dependencia entre los paquetes representados por la flecha punteada Un paquete depende de otro si al cambiar uno de ellos cambia el otro.
Compania -nombre:String
Paquetes
A su vez los paquetes pueden dividirse en otros paquetes, por ejemplo, el paquete de negocio podra dividirse en los paquetes de compra, venta, inventario.
Identificando Clases
Revise los requerimientos capturados en el diagrama de casos de uso Extraiga los nombres: Nombre comn podra identificar a una Clase, por ejemplo Profesor. Elimine nombres que:
Son redundantes Representan instancias: un nombre propio podra identificar a un Objeto (Julio) No son necesarios en la aplicacin, esto es, son irrelevantes.
Presentacion
Persistencia
Identificando Clases
Categora Objetos Tangibles o Fsicos Especificaciones, Diseos o Descripciones de las Cosas Lugares Transacciones Grupos de Transacciones Roles de Personas Contenedores de Otras Cosas Cosas en un Contenedor Otros Sistemas Externos al Sistema Conceptos Abstractos Organizaciones Hechos Ejemplo Registro, Avion EspecificaionDelProducto DescripcionDelVuelo Tienda Venta, Pago, Reserva Factura Cajero, Piloto Tienda, Lata ,Avion Articulo, Pasajero SistemaAutorizacionCredito Ansia, Acrofobia DepartamentoVentas Venta, Pago, Reunion, Vuelo, Colision
Identificando Atributos
Verifique la informacin que debe mantenerse en cada clase. Verifique caractersticas de la clase. Nombres que se descartaron como clases pueden ser atributos. Un atributo debe ser atmico, esto es debe tener un slo valor, los atributos multivaluados deben ser creados en otra clase. Por ejemplo si un persona tiene muchas direcciones, veamos las posibles alternativas de clases
Identificando Atributos
Person
name addresses
Ejemplo Asociacin
Customer Video renter : Customer Worse rentedVideos: List of Video
Person
name street1 municipality1 provOrState1 country1 postalCode1 street2 municipality2 provOrState2 country2 postalCode2
Person
name
* addresses *
Address
street municipality provOrState country postalcode type
Good solution. The type indicates whether it is a home address, business address etc.
Rents4
1..* ...
Video
Bad due to too many attributes, and inability to add more addresses
Ejemplo Sencillo
*
Initiates 4
1 Customer
Rents4 VideoStore
1..* Video
Stocks4 1
ID
1 Maintains6
*
1
Defines3 1..*
Referencias
Larman C., UML y Patrones, Prentice Hall, Segunda Edicin, 2003 Bruegge B., Ingenieria de Software Orientada a Objetos, Ed. Prentice Hall, Mexico 2002 www.omg.org (Object Modeling Group) www.bruceeckel.com (Pgina oficial de Bruce Eckel)