You are on page 1of 46

ANALISIS Y DISEÑO DE

SISTEMAS

SESION 07

UNIVERSIDAD NACIONAL DE INGENIERIA


Facultad de Ingeniería Industrial y de Sistemas
Ing. Jesús Walter Antaurco Trujillo
Wantaurco@yahoo.com
Objetivos de la clase
 Analizar con detalle el modelado
estructural

2
Contenidos

1. Modelado Estructural
 Diagramas de Clases

3
Modelado Estructural

4
Modelado estructural
 Se describen los tipos de objetos de un
sistema y las relaciones estáticas que
existen entre ellos.
 Clases
 Interfaces
 Relaciones de dependencia, realización,
generalización y asociación (agregación,
composición)
 También pueden incluir paquetes y colaboraciones

 Un diagrama de clase es una representación


gráfica de un modelo estructural.
5
Modelado estructural:
Diferentes perspectivas
 Modelado Conceptual
 Conceptos del dominio del problema: atributos,
restricciones y relaciones entre ellos.
 Modelo del Análisis
 Clases que corresponden a conceptos del dominio
 Atributos y operaciones (métodos)
 Modelo de Diseño
 Incluye clases que corresponden a decisiones del
diseño
 Modelo de Implementación
 Clases que corresponden a un lenguaje de
programación
6
Pedido Desayuno
dirección Cliente
fecha +pedidos +cliente numeroCuenta
hora direccion
descuento 1..n 1
crearPedido()
calcularPrecio()
+pedido 1
Modelo
+desayuno
Conceptual
1..n Desayuno
Estandar
Desayuno
nombre
numero
precio
estilo
0..n

0..n

Comestible
nombre
cantidadMinima
precio
Cambio 0..n 1..n
formaTransporte
cantidad

Parte
cantidad

7
Del modelo conceptual a las clases

 Los modelos de análisis se obtienen a partir


del modelo conceptual:
 Conceptos a clases
 Atributos de un concepto a atributos de la clase
 Añadir comportamiento (métodos)

8
Modelo de
IteradorCuenta
diseño

Cuenta Domiciliacion
1 0..n

Ahorro Corriente

Operacion
Periodica

9
Colaboración (parte estática)
Usuario
Pedido
nombre ItemPedido
numero
nif
tipoPago unidades
email
estado total
login 1 0..n 1 1..n
caducidad
clave
0..n
1

1
1
Producto
CarroCompra ItemCarro
nombre
precio unidades
descripcion
items total
1 1..n 0..n 1 precio

10
Colaboración (parte dinámica)
: Usuario
11: recalcularTotal()
1: añadirItem(codigo)
4: añadirItem(codigo)
2: añadirItem(codigo) 3: [primer producto] crear()

: MostrarProductos : Añadir : 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
Ingeniería directa e Inversa

 Ingeniería directa
 Transformar modelos en código en un
lenguaje de programación determinado
 Ingeniería inversa
 Obtener un modelo a partir de código.
 Más difícil ya que hay pérdida de
información al pasar de los modelos al
código.

12
Clases
Cuenta
ultimoCodigo Atributos
codigo
cliente
saldo
ultimasOperaciones
Operaciones
getSaldo()
getUltimasOperaciones()
nuevoCodigo()
 No se tienen por qué mostrar todos las propiedades
 Se pueden agrupar operaciones: <<constructor>>,
<<query>>
13
Interfaces
 Una interfaz es una colección de
operaciones que especifica los servicios
de una clase o componente.

<<Interface>>
Collection
<<Interface>>
Iterator
add()
remove() next()
size() hasNext()
contains()
iterator()

14
Atributos

[visibilidad] nombre [: tipo] [= valor_inicial ] [{propiedades}]


+ = pública
visibilidad # = protegida
- = privada

Nombre : nombre del atributo


Tipo : tipo del atributo
valor_inicial : valor inicial o por defecto

15
Atributos
Cliente
nombre : String

 Nivel Conceptual: “Los clientes tienen un nombre”


 Nivel de Especificación: “El cliente puede
almacenar y consultar su nombre”
 Nivel de Implementación: “Una instancia de
Cliente tiene un campo de tipo String que almacena
su nombre y un método que lo devuelve”

16
Operaciones

[visibilidad] nombre [(lista_parametros)] [: tipo_retorno]


[{propiedades}]
+ = pública
visibilidad # = protegida
- = privada

nombre: nombre de la operación

lista_parámetros: lista de parámetros separados por comas

tipo retorno: tipo de valor devuelto por la operación

propiedades: {isQuery}, {sequential}, {concurrent}


17
Operaciones

Cuenta Atributos
- codigoCuenta : int
# cliente : int
# saldo : int
# ultimaOperacion : int
+ getSaldo () : int Operaciones
+ getUltimaOperacion () : int
- nuevoCodigo () : int

18
Relaciones
 Dependencia
Un cambio en la especificación de un elemento afecta a
otro
PlanDelCurso
Curso
Window
añadir(c : Curso)
position eliminar(c : Curso)
parent
children
size Clock

open()
close() Nodo Lista
move()
resize()
<<friend>>
19
Estereotipos para dependencias

 bind: entre una clase genérica y una instanciación


 friend: dependencia de clase amiga
 use: relación de uso, el más común entre clases y se da por
defecto

 import: un paquete importa los elementos de otro.


 extend: para casos de uso
 include: para casos de uso

20
Relaciones
 Generalización
 “Es-un-tipo-de”

Cuenta Window

CuentaAhorro CuentaCorriente TextWindow BoxDialog

21
Generalización
 Nivel Conceptual
 “Todas las instancias de CuentaCorriente son
instancias de Cuenta”
 Nivel Especificación
 “La interfaz de CuentaCorriente incluye la interfaz de
Cuenta”
 Nivel Implementación
 Herencia

22
Asociación
 Asociación
 Relación estructural que especifica que los objetos
de un tipo están conectados con los de otro.

Persona +empleado +patron Empresa


1..* *

impartido
Curso Profesor
* 1..*

23
Asociaciones
 Agregación
 Caso especial de asociación
 Relación estructural parte-de
Empresa

1..1

*
Departamento

24
Asociaciones

 Nivel Conceptual
 Muestran la relación conceptual entre dos clases.
“Un cliente tiene varios pedidos”
 Nivel de Especificación
 Representan responsabilidades
 Detectamos los mensajes del protocolo de una
clase con respecto a la otra
 Nivel de Implementación
 Establecer atributos: navegabilidad

25
Asociaciones

 Especificación:
class Pedido {
public Cliente getCliente();
public Set getLineaPedido();
... }
 Implementación

class Pedido {
private Cliente _cliente;
private HashSet _lineasPedido;
…}
26
Navegación
 Posibilidad de limitar la navegación a una sola dirección
 Determina si una clase de la asociación tiene
“conocimiento” de la otra.
 Nivel de especificación o implementación

impartido
Curso Profesor
* 1..*

27
Navegabilidad (UML 2.0)

A B Navegabilidad indefinida

A B Navegable de A a B, de B a A indefinida

A B Navegable en ambos sentidos

A B Navegable sólo de A a B

A B No navegable en ningún sentido


28
Navegabilidad (Práctica habitual)

A B Navegabilidad en ambos sentidos

A B Navegable sólo de A a B

A B No se usa

A B No se usa

A B No se usa
29
Visibilidad
 Pública: +propietario
 Protegida: #propietario
 Privada: -propietario

GrupoUsuarios Usuario +propietario -clave Clave


* * 1..1 *

30
Agregación
 Dos criterios:
 Dependencia:
¿La existencia de una parte va ligada a la
del agregado?
 Exclusividad:
¿Una parte puede pertenecer a más de un
agregado?

31
Composición

 Es un caso particular de agregación:


exclusiva y dependiente
 Las partes pueden crearse después del
agregado compuesta al que pertenecen, pero
una vez creadas viven y mueren con ella.
 La parte sólo puede formar parte de un
agregado.
 El agregado gestiona la creación y
destrucción de las partes.
 Las partes se pueden eliminar antes de
eliminar el agregado. 32
Composición
Ventana agregado /todo

1..1

composición
*
Marco parte

33
Composición

POLIGONO
Poligono

1 1 1
Relleno:Diseño

1
{ordered} 3..n
Diseño
Punto {ordered} 3..*
color
textura
Punto

34
Clases Asociación

 Una asociación que también es una clase


 Una clase asociación añade una restricción:
“Sólo puede existir una instancia de la
asociación entre cualquiera par de
objetos participantes”

 No podríamos modelar que una persona tiene


diferentes contratos para una misma compañía
a lo largo del tiempo.

35
Ejemplo de clase asociación

NivelSalario
min
Empleado max
inicio
id
fin
0..n 0..n
name
id
HistoriaSalario
inicio
fin
salario

36
Ejemplo de clase asociación

+empleado +patron
Persona Compañia
1..* *

Trabajo
descripcion
fechaContrato
salario

37
Restricciones para Asociaciones
Empresa
Departamento

Cuenta * *
{or}

Persona
{subconjunto}

+miembro 1..* +Director


1..1
Persona

38
Paquetes
 Elemento organizativo
 Puede agrupar elementos de cualquier tipo.
 Un elemento es exclusivo a un paquete.
 Establece un espacio de nombres
 Posibilidad de anidar paquetes.

Modelo

Modelo + Producto
+ CarroCompra
+ Comercio

39
Importación/Exportación en paquetes

 “Los paquetes permiten controlar la complejidad del


manejo de un gran número de abstracciones,
controlando los accesos mediante la importación”.
 Relaciones de importación, acceso y generalización
 La parte pública de un paquete son sus exportaciones.
 Las partes públicas son visibles en los paquetes que
importan al paquete contenedor.
 La importación no es transitiva.
 Los paquetes anidados pueden ver todo lo que ven los
paquetes que los contienen.

40
Cliente

Servidor + FormularioPedido
+ FormularioDeSeguimiento
+ BaseDeDatos - Pedido
+ ServicioDeRegistro

<<import>>

Politicas
+ ReglasPedidos
+ GUI:Ventana

<<import>>
GUI
+ Ventana
+ Formulario
# GestorEventos

41
Generalización de Paquetes
GUI
+ Ventana
+ Formulario
# GestorEventos

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

42
Paquetes

 Un paquete bien estructurado debe:


 ser cohesivo
 estar poco acoplado
 pocos anidamientos
 conjunto equilibrado de elementos

43
Uso de los paquetes

<<subsystem>> <<layer>>
Pedidos Servicios
Básicos

<<model>> <<framework>>
Diseño Struts

44
Uso de los paquetes

 Agrupar elementos relacionados para


manejarlo en conjunto.
Paquete “Clases e interfaces del modelo”
Paquete “Interfaces de usuario”
Paquete “Servicios base de datos”
Paquete “Modelo del análisis”

 Un modelo es un paquete incluyendo todos


los elementos que constituyen una particular
vista del sistema modelado.

45
Análisis y Diseño de Sistemas

FIN Sesión 7

UNIVERSIDAD NACIONAL DE INGENIERIA


Facultad de Ingeniería Industrial y de Sistemas
Ing. Jesús Walter Antaurco Trujillo
Wantaurco@yahoo.com 46

You might also like