Академический Документы
Профессиональный Документы
Культура Документы
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
Modelado estructural
Diferentes perspectivas. Modelado Conceptual
Conceptos del dominio del problema: atributos, restricciones y relaciones entre ellos.
Modelo de Implementacin
Clases que corresponden a un lenguaje de programacin
4
Cuenta 1 0..n
Domiciliacion
Ahorro
Realizar Compra
Realizar Compra
10
: 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
: Producto
11
12
13
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()
16
Atributos
[visibilidad] nombre [: tipo] [[multiplicidad]] [= valor_inicial ] [property-string {, property-string}]
+ = # = = ~ = pblica protegida privada package
valor_inicial:
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
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
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
<<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)
Clock
Nodo <<friend>>
Lista
24
<<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
complete/incomplete (restriccin):
se han especificado todos los descendientes?
disjoint/overlapping (restriccin):
una nueva clase puede ser subclase de ms de una subclase?
27
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
*
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
A
A A
B
B B
A
A A
B
B B
No se usa No se usa
36
GrupoUsuarios
0..* 0..*
Usuario
+propietario 1
Clave
37
38
empleado
patrn
Persona
0..1
Empresa
{ Persona.patrn= Persona.jefe.patrn }
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
Profesor 0..*
0..* 0..*
Asignatura
Asignatura
* *
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
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
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
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
@b1 @b2
Clase Asociacin
Clase A
susA suB Clase B
1..*
Clase C atributos
0..1
Clase Asociacin
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
*
Matrcula numConv nota
Clase Asociacin
Distinta semntica
Empresa 1..*
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.
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
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
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
1 Prestatario
+prestatarios 0..n 1
1 Biblioteca 1 1..n
Bibliotecario
Estudiante
Personal
60
:Bibliotecario [1..*]
biblioConectado:Bibliotecario [0..1]
61
: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.
Target
Observer
TargetTracker Observer
64
Diagrama de clases
65
Paquetes
Elemento organizativo
Puede agrupar elementos de cualquier tipo.
Modelo
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.
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
MacGUI
71
Diagrama de paquetes
72