Вы находитесь на странице: 1из 72

Anlisis y Diseo del Software

El Lenguaje Unificado de Modelado UML 2.2

Contenidos
Modelado Estructural Diagramas de clases Paquetes

Modelado estructural
Se describen los tipos de objetos de un sistema y las relaciones estticas que existen entre ellos.
Clases Interfaces Relaciones de dependencia, realizacin, generalizacin y asociacin (agregacin, composicin) Tambin pueden incluir paquetes y colaboraciones

Un diagrama de clase es una representacin grfica de un modelo estructural.


3

Modelado estructural
Diferentes perspectivas. Modelado Conceptual
Conceptos del dominio del problema: atributos, restricciones y relaciones entre ellos.

Modelo del Anlisis


Clases que corresponden a conceptos del dominio Atributos y mtodos

Modelo del Diseo


Incluye clases que corresponden a decisiones del diseo

Modelo de Implementacin
Clases que corresponden a un lenguaje de programacin
4

Del Modelo Conceptual a las clases


Los modelos de anlisis se obtienen a partir del modelo conceptual:
Conceptos se convierten en clases Atributos de un concepto a atributos de la clase Aadir comportamiento (mtodos)

Del Anlisis al Diseo


Aparecen las clases del diseo
Interfaces Patrones de diseo Estructuras de datos Persistencia Distribucin

Modelo del Anlisis

Modelo del Diseo


IteradorCuenta

Cuenta 1 0..n

Domiciliacion

Ahorro

Corriente Operacion Periodica

Modelado estructural y del comportamiento


Colaboraciones y Patrones de diseo tienen una parte estructural y otra de comportamiento.

Realizar Compra

Realizar Compra

Colaboracin (parte esttica)

10

Colaboracin (parte dinmica)


: Usuario 11: recalcularTotal() 1: aadirItem(codigo) 4: aadirItem(codigo) 2: aadirItem(codigo) 3: [primer producto] crear()

: MostrarProductos

: Aadir

: CarroCompras

6: [!nuevoItem]incrementarUnidades()

10: [nuevoItem]put(codigo,i)

5: i:=getItemCarro(codigo)

7: [nuevoItem]p:=get(codigo)

9: [nuevoItem]i:=creaItem(p)

: ItemCarro

: CatalagoProductos i : ItemCarro 8: [nuevoItem]p:=buscar(codigo)

: Producto

11

Patrn de diseo (parte esttica)


Subject subjectState Attach() Detach() Notify() +observers 1..1 1..* Observer Update()

for all o in observers {o.update()}

ConcreteSubject subjectState getState() setState() +subject

ConcreteObserver observerState update() observerState= subject.getState()

12

Patrn de diseo (parte dinmica)


: Subject 1. setState() 1.1. notify() 1.1.1. update() 1.1.2. update() o1 : Observer o2 : Observer

13

Ingeniera Directa e Inversa


Ingeniera directa
Transformar modelos en cdigo en un lenguaje de programacin determinado.

Ingeniera inversa
Obtener un modelo a partir de cdigo. Ms difcil ya que hay prdida de informacin al pasar de los modelos al cdigo.

14

Clases
Atributos

Operaciones

No se tienen por qu mostrar todos los atributos y mtodos Agrupar los mtodos usando estereotipos: <<constructor>>, <<query>>,...

15

Interfaces
Una interfaz es una coleccin de operaciones que especifica los servicios de una clase o componente.
<<Interface>> Collection add() remove() size() contains() iterator()

<<Interface>> Iterator next() hasNext()

16

Atributos
[visibilidad] nombre [: tipo] [[multiplicidad]] [= valor_inicial ] [property-string {, property-string}]
+ = # = = ~ = pblica protegida privada package

visibilidad nombre: tipo:

nombre del atributo


tipo del atributo

valor_inicial:

valor inicial o por defecto

propiedades: {frozen} {addOnly}


17

Atributos: Ejemplos
origen + origen origen : Punto nombre : String [0..30] origen : Punto = (0,0) id : Integer {readOnly}

18

Operaciones
[visibilidad] nombre [(lista_parametros)] [: tipo_retorno] [property-string {, property-string}]
+ = # = = ~ = pblica protegida privada package

visibilidad

nombre: nombre de la operacin lista_parmetros: tipo retorno: propiedades: lista de parmetros separados por comas

tipo de valor devuelto por la operacin {isQuery}, {sequential}, {concurrent}


19

Operaciones: Ejemplos
dibujar () + dibujar () set (nombre : String) getID(): Integer arrancar() {sequential} Formato parmetro:
[direccion] nombre : tipo [= valor-por-defecto] direccion puede ser : in, out o inout set (in nombre : String = )
20

Clases Parametrizadas
G

Clase Parametrizada

Tabla count capacity put(G) item() : G

bind <Empleado>

Empleados

Instanciacin

Tabla<Empleado>

21

Otras propiedades
Clases y mtodos abstractos Multiplicidad Variables y mtodos de clase
1

22

Clases Estereotipadas

Cuenta

Controlador Ingreso

JFrameBanco

<<entity>> Cuenta

<<control>> Controlador Ingreso

<<boundary>> JFrameBanco

Cuenta

Controlador Ingreso

JFrameBanco

23

Relaciones
Dependencia
Un cambio en la especificacin de un elemento afecta a otro.
PlanDelCurso Curso aadir(c : Curso) eliminar(c : Curso)

Window position parent children size open() close() move() resize()

Clock

Nodo <<friend>>

Lista

24

Estereotipos para la dependencia


<<use>>: relacin de uso, el ms comn entre clases y se da por defecto <<trace>>: cliente y proveedor representan el mismo concepto en
diferentes modelos

<<bind>>: entre una clase genrica y una instanciacin <<friend>>: dependencia de clase amiga <<import>>: un paquete importa los elementos de otro <<access>>: similar a <<import>> <<extend>>: para casos de uso <<include>>: para casos de uso

25

Relaciones
Generalizacin
Relacin estructural Es-un-tipo-de.

Cuenta

Window

CuentaAhorro

CuentaCorriente

TextWindow

BoxDialog

26

Adornos para la generalizacin


implementation (estereotipo):
herencia privada C++

complete/incomplete (restriccin):
se han especificado todos los descendientes?

disjoint/overlapping (restriccin):
una nueva clase puede ser subclase de ms de una subclase?
27

Restricciones semnticas entre las subclases


Overlapping
Una nueva clase puede ser subclase de ms de una subclase. Una instancia puede ser instancia directa o indirecta de dos ms subclases.

Disjoint
Una nueva clase no puede ser subclase de ms de una subclase. Instancias de una nica clase.
28

Generalizacin: {overlapping}

29

Generalizacin: {disjoint}

30

Relaciones
Asociacin
Relacin estructural que especifica que los objetos de un tipo estn conectados con los de otro.
+empleado 1..* +dueo 1..*

Persona

+empleador *
1

Empresa

Curso
*

es impartido por imparte


1..*

Profesor

31

Cardinalidad de la asociacin
1 0..1 * 0..* 1..* N M..N con uno con uno o ninguno con cero, uno o varios con cero, uno o varios con uno o varios con N exactamente mnimo con M y mximo con N

Curso *

es impartido por
imparte 1..*

Profesor

32

Navegabilidad de la asociacin
Las asociaciones son bidireccionales. Posibilidad de limitar la navegacin a una sola direccin. Determina si una clase de la asociacin tiene conocimiento de la otra. Se indica tanto a nivel de especificacin (de anlisis y de diseo) como de implementacin.

33

Navegabilidad de la asociacin
class Pedido { private Hashtable _itemsPedido; private Date fecha; private boolean esCompleto; ...} class ItemPedido { private Producto producto; private int cantidad; ...} Class Producto { private Money precio; private String descripcin; ...}

34

Navegabilidad (UML 2.0)


A A B B
Navegabilidad indefinida Navegable de A a B, de B a A indefinida Navegable en ambos sentidos

A
A A

B
B B

Navegable slo de A a B No navegable en ningn sentido


35

Navegabilidad (Prctica habitual)


A A B B
Navegabilidad en ambos sentidos Navegable slo de A a B No se usa

A
A A

B
B B

No se usa No se usa
36

Visibilidad de roles de la asociacin


Pblica: Protegida: Privada: Paquete: + # ~ propietario propietario propietario propietario

GrupoUsuarios
0..* 0..*

Usuario

+propietario 1

-clave 0..* 0..

Clave

37

Restricciones para la asociacin

38

Restricciones para la asociacin


operario * 0..1 jefe

empleado

patrn

Persona

0..1

Empresa

{ Persona.patrn= Persona.jefe.patrn }

Un empleado trabaja para la misma empresa que su jefe


39

Asociacin n-aria en UML


Clase A Un par <b,c> conocido puede estar asociado a los as que quiera Clase B 0..* Un par <a,c> conocido puede estar asociado a los bs que quiera

Clase C 0..1 Un par <a,b> conocido puede estar asociado a lo sumo con un solo c

0..*

Fijados el resto de objetos que participan en la asociacin, con cuntos pueden relacionarse?

40

Asociacin n-aria en UML: Ejemplo


Estudiante

Profesor 0..*

0..* 0..*

Asignatura

Informacin sobre qu profesores imparten qu asignaturas a qu estudiantes


HAY QUE ESTAR SEGUROS DE QUE SE NECESITA UNA ASOCIACIN TERNARIA
41

Asociacin n-aria en UML: Ejemplo


Estudiante * matriculadoEn Profesor * imparte

Asignatura
* *

Los estudiantes se matriculan en asignaturas. Los profesores imparten asignaturas.

ASOCIACIN TERNARIA SLO SI HAY QUE DISTINGUIR CON QU 42 PROFESOR/ES SE HA MATRICULADO

Asociacin n-aria en UML: Ejemplo


Estudiante

Profesor 0..*

0..* 0..*

Asignatura

Los estudiantes se matriculan en asignaturas. Los profesores imparten asignaturas. Cuando un estudiante se matricula en una asignatura, NO todos los profesores que la imparten son sus profesores.

43

Asociacin n-aria en UML: Ejemplo


Estudiante

Profesor 0..1

0..* 0..*

Asignatura

par <est,asig> conocido con 0 1 profesor Un estudiante se puede matricular en una asignatura SLO CON UNO DE LOS PROFESORES QUE LA IMPARTE, o no matricularse, claro.

44

Asociacin n-aria en UML: Ejemplo


Estudiante

Profesor 0..1

0..* 0..*

Asignatura

par <est,prof> conocido en 0 varias asignaturas Un estudiante se puede matricular con el mismo profesor en DISTINTAS asignaturas o puede que no le corresponda ese profesor.

45

Asociacin n-aria en UML: Ejemplo


Estudiante

Profesor 0..1

0..* 0..*

Asignatura

par <prof,asig> conocido con 0 varios estudiantes Un profesor puede impartir o no una asignatura, y si la imparte, entonces puede tener VARIOS estudiantes.
46

Clase Asociacin
Una asociacin que tambin es una clase. Una asociacin que posee sus propias caractersticas. Una clase asociacin aade una restriccin: Slo puede existir una instancia de la asociacin entre cualquiera par de objetos participantes

47

Clase Asociacin
Clase A
susA suB Clase B

1..*
Clase C atributos

0..1
Clase Asociacin

Para almacenar <objeto de A, objeto de B, Atributos PROPIOS>


Objetos de la clase A

@a1 @a2 @a3 @a4

@b1 @b2

Objetos de la clase B Objetos de la clase C 48

@c1 @c2 @c3 v1 v2 v3

Clase Asociacin
Clase A
susA suB Clase B

1..*
Clase C atributos

0..1
Clase Asociacin

Cada objeto de C se refiere a un nico objeto de A y a un nico objeto de B.

49

Clase Asociacin
Clase A
susA 1..* Clase C suB 0..1

Clase B

Si se quisiera que uno de C pudiera asociarse con varios de A y con 0 1 de B, entonces no se puede usar una clase asociacin sino una clase (normal) y 2 asociaciones.
50

Clase Asociacin: Ejemplo


Estudiante matriculadoEn Asignatura

*
Matrcula numConv nota

Clase Asociacin

Si se desea poder almacenar el n de convocatoria, nota obtenida, curso acadmico, etc.


51

Clase Asociacin y Clase Normal: Ejemplo


Persona +empleado 1..* +empleador * Empresa

Contrato salario descripcion fechaContrato

Distinta semntica
Empresa 1..*

Contrato Persona 0..* salario descripcion fechaContrato

Si se quiere modelar que una persona tiene diferentes contratos para una misma empresa a lo largo del tiempo, NO se debe disear mediante una clase asociacin, sino mediante 52 una clase normal.

Asociacin: Agregacin vs. Composicin


Dos criterios:
Dependencia:
La existencia de una parte va ligada a la del agregado?

Exclusividad:
Una parte puede pertenecer a ms de un agregado?

Habra cuatro posibles tipos de agregacin; en UML hay dos: agregacin y composicin.

53

Asociaciones
Agregacin
Caso especial de asociacin. Relacin estructural Parte-de.
Empresa

0..1

Departamento

54

Agregacin
Clase A
1..*

Clase B

0..1

ES UNA ASOCIACIN CON LA SEMNTICA FORMADO POR/FORMA PARTE DE Clase A


formaParteDe

1..*

Clase B

0..1

formadoPor
55

Agregacin: Ejemplo
Coche
4 Motor

Rueda

0..1

56

Asociaciones
Composicin
Caso especial de agregacin: exclusiva y dependiente. Una parte pertenece a un nico agregado (exclusividad). Si se elimina un agregado se eliminan todas sus partes (dependencia) Una parte se puede aadir o eliminar en cualquier instante al agregado.
Window 1 1
2

agregado

+scrollbar Slider

+title

1 +body Panel

Header

partes

57

Composicin
Clase A 1..* Clase B

nica cardinalidad posible ES UNA ASOCIACIN CON LA SEMNTICA COMPUESTO POR/ES COMPONENTE DE

Si se borra el a, se borran los b


Clase A
esComponenteDe 1..*

Clase B

compuestoPor
58

Composicin: Ejemplo
Coche 4 Motor Rueda

NO se permite tener motores ni ruedas sueltos; y al borrar el coche, se borra todo. Seguro que no se trata de un desguace.

59

Clases Estructuradas: Ejemplo


0..n Prestamo +prestamos 0..n libroPrestado 1 Libro +catalogo 0..n

1 Prestatario

+prestatarios 0..n 1

1 Biblioteca 1 1..n

Bibliotecario

Estudiante

Personal

estudiante: prestamos < 5 personal: prestamos < 10

60

Clases Estructuradas: Ejemplo


Estructura interna de una clase
Biblioteca

estudiante: Prestatario [0..*]


0..* PrestamoEstud: Prestamo [0..4] 1

personal: Prestatario [0..*]


Libro: [0..*]
1
0..* PrestamoPerso: Prestamo [0..9]

:Bibliotecario [1..*]

biblioConectado:Bibliotecario [0..1]

61

Diagrama compuesto de estructura


Biblioteca

estudiante: Prestatario [0..*]


0..*
PrestamoEstud: Prestamo [0..4] 1

personal: Prestatario [0..*]


Libro: [0..*]
1 0..* PrestamoPerso: Prestamo [0..9]

:Bibliotecario [1..*]

biblioConectado:Bibliotecario [0..1]

62

Relaciones
Realizacin
Relacin entre una especificacin y su implementacin. Conecta un elemento de modelado (p.e., una clase) con otro elemento (p.e., una interfaz), que especifica su comportamiento pero no su implementacin.

63

Diagrama de clases
Notacin Lollipop
La relacin de dependencia de un clasificador (una clase, un componente) de una interfaz se muestra mediante un semi-crculo abierto, que significa interfaz requerida. La relacin de realizacin de las interfaces implementadas en una clase o en un componente se muestra con un crculo, que significa interfaz proporcionada.

Interfaz requerida Interfaz proporcionada

Target
Observer

TargetTracker Observer

64

Diagrama de clases

65

Paquetes
Elemento organizativo
Puede agrupar elementos de cualquier tipo.

Un elemento es exclusivo a un paquete:


Si eliminamos el paquete se elimina el elemento.

Establece un espacio de nombres. Posibilidad de anidar paquetes.


Modelo

Modelo

+ Producto + CarroCompra + Comercio

66

Relaciones
Dependencia
Importacin/Exportacin
La parte pblica de un paquete son sus exportaciones. Las partes pblicas son visibles en los paquetes que importan al paquete que los contiene.
Cuando un paquete A importa a otro B, todos los elementos pblicos de B son aadidos a A y se accede a ellos sin calificar su nombre.

La importacin se representa mediante una relacin de dependencia estereotipada con <<import>>.

Acceso
La relacin de acceso es igual que la importacin pero no se pueden re-exportar los elementos aadidos. La relacin de importacin es transitiva, mientras que la relacin de acceso no lo es. El acceso se representa mediante una relacin de dependencia estereotipada con <<access>>.
67

Dependencia de paquetes
Cliente
Servidor + BaseDeDatos + ServicioDeRegistro + FormularioPedido + FormularioDeSeguimiento - Pedido

<<import>>
Politicas
+ ReglasPedidos + GUI:Ventana

GUI
+ Ventana + Formulario # GestorEventos

<<import>>

68

Dependencia de paquetes

Auxiliary

<<access>>
ShoppingCart

<<import>>

WebShop

<<import>>
Types

69

Relaciones
Generalizacin
La generalizacin entre paquetes es muy parecida a la generalizacin entre clases. Un paquete especializado puede usarse donde quiera utilizarse un paquete ms general.

70

Generalizacin de paquetes
GUI + Ventana + Formulario # GestorEventos

WindowsGUI + GUI:Ventana + Formulario # GUI:GestorEventos + VBForm

MacGUI

71

Diagrama de paquetes

72

Вам также может понравиться