Vous êtes sur la page 1sur 9

Curso de Arquitecturas de Software

Modelo de Anlisis (Modelo Conceptual)


Explica los conceptos ms significativos del dominio del problema, identificando los atributos y las asociaciones, y es el modelo ms importante del anlisis orientado a objetos. Representa cosas del mundo real, no componentes del software En UML se representa mediante un grupo de diagramas de estructura esttica

Programacin Orientada a Objetos Diagramas de Clases y el Modelo Conceptual

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.

Diagrama de Clases Contenido


Un diagrama de clases contiene bsicamente:
Clases Relaciones Interfaces Dependencias Navegabilidad, multiplicidad, roles Restricciones Notas de comentarios, aclaracin.

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.

La visibilidad puede ser :


+ : publica - : privada # : protegida

Puede existir visibilidad a nivel de paquetes

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>

La visibilidad del atributo aparece al comienzo:


+ : publica - : privada # : protegida

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).

Las relaciones tienen roles, cardinalidad, navegabilidad, calificadores

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.

Item -description:String +priceForQuantity:double

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

Relacin de Composicin Agregacin


Son relaciones de asociacin especializadas y estn relacionados con los conceptos de:
Todo/una parte Consiste de Est formado por Tiene un

Person * Creates Workorders

Person

Person

inspector Creates Workorders * repairperson

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

Equipo 0..* estconformado 1..*

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.

Credit -number:int -type:String -expDate:String +authorized:boolean

Cash -cashTendered:double

Check -name:String -bankId:long +authorized:boolean

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

OperacionesCompania -semestre:int +tomarCompania:Compania

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.

Modelo del Mundo

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 Clases (cont)


Categora Procesos (Normalmente no se representan como conceptos, pero podra ocurrir) Reglas y Polticas Catlogos Registros de Finanzas, Trabajo, Contratos, Cuestiones Legales Instrumentos y servicios Financieros Manuales, documentos, Artculos de Referencia, Libros Ejemplo VentadeUnProducto ReservaUnAsiento PoliticaDeReintegro PoliticaDeCancelacion CatalogoDeProductos CatalogoDePiezas Recibo, LibroMayor, ContratoEmpleo, RegistroMantenimiento LineaDeCredito, Stock ListaDeCambiosDePreciosDiarios ManualReparaciones

Identificando Clases y Relaciones entre Clases


Los actores pueden indicar posibles clases. Los tipos de actores pueden indicar posibles relaciones de herencia. Una relacin podra existir entre las clases, si una clase:
Posee Controla Est conectada a Est relacionada con Es parte de Tiene como partes a Es miembro de Tiene como miembros a Es un tipo de

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

Los verbos podran indicar operaciones de las 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

Bad due to a plural attribute

Good solution. The type indicates whether it is a home address, business address etc.

Customer Better ...

Rents4

1..* ...

Video

Bad due to too many attributes, and inability to add more addresses

Ejemplo Sencillo

Ejemplo Completo VideoStore Modelo del Dominio


Pays-for-overdue-charges 4 VideoRental CashPayment amount : Money 1 Pays-for 4 1 RentalTransaction 1 date 1 1 dueDate returnDate returnTime Records-rental-of 6 Rents4 VideoStore Rents-from 4 address name 1 phoneNumber Stocks4 1 Video ID 1 1..* 0..1 1..*

*
Initiates 4

1 Customer address name phoneNumber Rents-from 4

1 Customer

Rents4 VideoStore

1..* Video

address name phoneNumber

Stocks4 1

address name phoneNumber 1 Has 6 1 Membership ID startDate 1 LoanPolicy

ID

1 Maintains6

*
1

1 Owns-a 4 Catalog 1 Described-by 6 1..* VideoDescription

perDayRentalCharge perDayLateCharge 1..* 1

Defines3 1..*

title subjectCategory Determines-rental-charge 4

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)

Vous aimerez peut-être aussi