You are on page 1of 74

TEMA 2: MODELOS ESTRUCTURALES

INGENIERA DE LA PROGRAMACIN

Mster en Ingeniera del Software, Mtodos Formales y Sistemas de Informacin

Contenidos
2

1. Introduccin 2. Clases 3. Asociaciones y enlaces 4. Agregacin 5. Generalizacin / Especializacin 6. Clases abstractas 7. Herencia mltiple 8. Restricciones y Asociaciones exclusivas

9 Interfaces 10 Paquetes 11 Diagramas de Componentes 12 Diagramas de Despliegue

Introduccin

Modelos estructurales
4

El modelo de objetos o diagrama de clases refleja la estructura esttica del sistema.


Es la herramienta principal de la mayor parte de los mtodos OO. Contiene clases relacionadas con otras clases, mediante asociaciones y relaciones de generalizacin / especializacin.

Cuando sea conveniente se pueden utilizar tambin diagramas que contengan objetos, llamados diagramas de instancias.

Objetos
5

Un objeto es un concepto, abstraccin, o cosa que tiene sentido dentro del contexto de una aplicacin. En definitiva, una encapsulacin de datos y operaciones. Los objetos aparecen como nombres propios o como referencias especficas dentro de la descripcin del problema o en las discusiones con el usuario.

Modelo de objetos
6

Mundo Real

Gap Semntico

Casa

vive

Persona

conduce

Coche

Modelo

Identidad de los objetos


7

El identificador de objetos (OID) es una caracterstica que permite diferenciar dos ocurrencias de un objeto con el mismo estado. Durante la fase de anlisis se asume que los objetos poseen identidad, en la fase de implementacin se puede elegir una aproximacin para realizarla:
Direcciones de memoria: en lenguajes de programacin. Combinacin de valores de atributos: en bases de datos Nombres nicos (surrogates): en algunos sistemas orientados a objetos.

Ejemplos de OID
8
Direcciones de memoria
Persona

persona1

Nom: String Edat: Integer

Pepe:Perso na 30 Pepe:Perso na 30

persona2

Base de datos relacional


Id Nom Edat

1
2

Pepe
Pepe

30
30

Surrogates:
Persona01, Persona02

Clases

Clases: notacin
10

Una clase es la descripcin de un grupo de objetos con estructura, comportamiento y relaciones similares.
NombreClase
+attribute1:type = defaultValue +attribute2:type -attribute3:type +operation1(params):returnType -operations2(params) -operation3()

Nombre de la clase Atributos

Operaciones

Se puede aadir un 4 compartimiento para definir responsabilidades, descripcin de la clases, etc.

Clases y instancias
11

Una clase es una abstraccin Un objeto es una manifestacin concreta de esa abstraccin.

Houston: Ciutat

Nombre: Houston TX Poblacion: 3000000

Ciutat
Nombre: String Poblacio: Integer

Atributos: notacin
12

Un atributo es una propiedad de una clase identificada con un nombre, y caracterizada por un rango de valores que puede tomar (un tipo). Notacin
[visibilidad] Nombre [: Tipo] [= valor_inicial]

donde visibilidad puede ser:

Persona + nom: string # edad: int - direccion: string ~ telefono: string

+ = Pblica # = Protegida - = Privada (por defecto) = implementacin o paquete

Los tipos permitidos para los atributos son tipos bsicos (integer, real, char, string, etc.), no objetos.

Atributos vs relaciones
13

Los atributos no incluyen referencia a otros objetos, estas referencias se representan mediante relaciones (enlaces). En el modelo de objetos no deben aparecer atributos que acten como identificadores de objetos.

Salvo si son identificadores naturales


Coche Aeropuerto IDAeropuerto CdigoAeropuerto Nombre ZonaHoraria

Matrcula color

Bueno para anlisis y diseo

Mal modelo para anlisis, bueno para diseo

Operaciones
14

Una operacin se corresponde con un servicio que puede ser requerido a cualquier objeto de la clase. Una operacin es una funcin o transformacin que puede ser aplicada a los objetos. Un mtodo es la implementacin de una operacin.

Operaciones: notacin
15

Las operaciones se definen de la siguiente forma:


[visibilidad] Nombre( [comalista_parmetros] ) [: Tipo_Resultado]

donde visibilidad puede ser:

+ = Pblica (opcin por defecto) #= Protegida - = Privada SensorTemperatura ~ = Paquete


#Reiniciar() ~ponerAlarma(t:float) +temperatura():float

Operaciones tpicas
16

Las operaciones que cambian el estado de un objeto se dice que tienen efectos laterales. Las operaciones que no tienen efectos laterales y que nicamente calculan un valor funcional se llaman consultas. Las consultas devuelven el valor de los atributos de los objetos.

Atributos derivados
17

Un atributo se dice que es derivado si puede calcularse en cualquier momento a partir del valor de otros atributos. La notacin para la informacin derivada es la siguiente:
/Nombre_Atributo: Tipo
Producto
-nombre:string -id:string -precio:float /precioConIva

Relaciones entre clases/objetos


18
Relacin

TIENE UN
Agregacin Uso

ES UN
Herencia

Composicin

Dependencia

Relaciones entre clases


19
Relacin Asociacin Uso Dependencia Descripcin Objetos tipo X y tipo Y se relacionan entre s Objetos de clase X usan objetos tipo Y que no son atributos de X Como uso, pero adems los objetos tipo Y no existen independientemente de los de tipo X

Agregacin
Composicin Herencia

Objetos de tipo X tienen atributos de tipo Y


Como agregacin, pero adems los objetos tipo Y

no existen independientemente de los de tipo X


Objetos de tipo X son un subconjunto de los objetos de tipo Y

Relaciones entre clases en Java


20
Relacin entre Clases Mecanismo Java

Uso y dependencia
Agregacin y Composicin Herencia

Referencias a objetos en parmetros y variables locales


Referencias a objetos en atributos Herencia simple mediante derivacin (extends) Herencia mltiple mediante implementacin de mltiples interfaces (implements)

Otras relaciones

Organizacin en paquetes y subpaquetes


(package)

Relaciones entre clases en UML


21

Asociacin Uso Dependencia Agregacin Composicin Herencia Realizacin

TIENE UN

ES UN

22

Asociaciones y enlaces

Asociaciones y enlaces
23

Un enlace es una conexin fsica o conceptual entre objetos. Una asociacin es una relacin estructural que especifica que los objetos de un elemento estn conectados con los objetos de otro. Las asociaciones aparecen en el diagrama de clases, mientras que los enlaces aparecen en el diagrama de instancias.

Asociaciones
24

Cada asociacin en el diagrama de clases se corresponde con un conjunto de enlaces en el diagrama de instancias. Dada una asociacin entre dos clases, se puede navegar en los dos sentidos, desde objetos de una clase a objetos de la otra. Asociaciones binarias son aquellas que conectan dos clases.

Asociaciones y enlaces
25
Diagrama de instancias
Ba: Aeropuerto Nombre Aeropuerto : Barajas Ge: Aeropuerto Nombre Aeropuerto: Getafe CodigoAeropuerto: Ge

CodigoAeropuerto: BA

Madrid: Ciudad
Nombre Ciudad: Madrid

Da servicio

poblacin: 3.000.000

Da servicio

Modelo de objetos

Nombre Asociacin

Aeropuerto
*

Ciudad

Da servicio

Nombre Aeropuerto CodigoAeropuerto

Nombre Ciudad poblacin

multiplicidad

Asociaciones y enlaces
26
Diagrama de instancias
Ba: Aeroport Ge: Aeroport

NomAeroport: Barajas
CodiAeroport: BA

Nom Aeroport: Getafe CodiAeroport: Ge

Madrid: Ciutat

Dona servei

Nom Ciutat: Madrid poblaci: 3.000.000

Dona servei

Diagrama de clases
Aeroport
*

Ciutat

Dona servei

NomAeroport CodiAeroport

Nom Ciutat
poblaci

Asociaciones y enlaces
27

Durante el anlisis las referencias a objetos se representan mediante enlaces, los enlaces similares se representan mediante asociaciones.
AssignarDepartament(Vendes); p:Persona E:Empresa

Persona
-Nom:String = ''

Treballa Per a

Empresa
1

-Adrea: String;
+Departament:String; +AssignarDepartament(d:String);

Atributos vs asociaciones
28

Durante el diseo las asociaciones se pueden representar con punteros, claves ajenas, etc. En el mbito conceptual no existe ninguna diferencia entre un atributo y una asociacin. En el mbito de la implementacin la semntica es distinta:

Atributos:
Semntica de valor Tipo: integer, float, string,..

Asociaciones:

Semntica de referencia

Anlisis vs diseo
29

Aeropuerto
* *

Ciudad Nombre Ciudad

Nombre Aeropuerto CdigoAeropuerto

Da servicio

Poblacin

Modelo de anlisis

Aeropuerto
Nombre Aeropuerto CdigoAeropuerto

Ciudad
Nombre Ciudad Poblacin Aeropuertos

Aeropuerto
Nombre Aeropuerto CdigoAeropuerto Ciudades

Ciudad
Nombre Ciudad Poblacin

Modelos de diseo

Asociaciones no binarias
30

Las asociaciones pueden ser binarias, ternarias o de orden mayor.


Proyecto Persona

asociaciones
Lenguaje

Proyecto Gestin Persona Maria

Lenguaje Cobol

enlaces
Lenguaje C

Proyecto
Auto Cad

Multiplicidad
31
1 5 0..1 M..N * n 0..* 1..* Uno y slo uno Necesariamente cinco Cero o uno De M a N De 0 a muchos De 0 a muchos De 0 a muchos De 1 a muchos

Ejemplo
32

Motor 1..4

Piloto 1..2

Vendedor de billetes 1

1 Avin 1 n

n Vuelo n 1 n

n Reserva

1 Lnea area

Roles
33

Los roles son nombres que identifican el papel que juega una clase asociada a otra dada.
Nombre relacin

Persona
Nombre N SS Direccion
*

Trabaja para

Empleado

Empresa

Compaa
Nombre Direccion

Cliente Roles

Banco

Roles
34

Los roles se utilizan para recorrer las asociaciones. Se tratan como pseudoatributos.
UnaCompaia.empleado UnaPersona.empresa

Son obligatorios para distinguir asociaciones reflexivas.


Persona 0..n padres 2 hijos

Roles
35

Son obligatorios para distinguir asociaciones distintas entre un mismo par de clases.
destinoDescripcin 1

origenDescripcin

Asociaciones como clases


36

Clases de asociacin: asignan una clase a la asociacin entre 2 clases


Permiten
Compaia
*

aadir atributos a la asociacin


*

Persona

fecha alta salario

Trabajo

Fichero

Accesible por

Usuario

Autorizacin
permiso acceso

Asociaciones cualificadas
37

Los cualificadores o calificadores dentro de una relacin de asociacin se utilizan para resolver bsquedas: dado un objeto en un extremo de la relacin, cmo identificar un objeto o conjunto de objetos en el otro extremo? Actan como ndices para recorrer la relacin.
Banco + N de Cuenta da una Cuenta

Siempre que se pueda pensar en una estructura de datos para efectuar una bsqueda en un extremo de una asociacin (una tabla hash, un rbol binario), se puede utilizar un cualificador.

Ej. Asociacin cualificada


38
Banco
NombreBanco
1 *

Cuenta
N de cuenta

Banco
1 0..1

Cuenta
N de cuenta

NombreBanco

Cualificacin
39

La cualificacin aumenta la precisin del modelo.


DescripcinDeVuelo
N de Vuelo HoraSalida Duracion
1

DescripcinDeVuelo
N de Vuelo HoraSalida Duracion FechaSalida
1

Vuelo
FechaSalida HoraSalidaActual DuracionActual

Vuelo
HoraSalidaActual DuracionActual

40

Agregacin

Agregacin
41

Es un tipo de relacin con unas propiedades semnticas adicionales. La relacin de agregacin se emplea cuando se desea modelar una relacin del tipo Todo/Parte.
Una empresa est formada por departamentos
todo
Empresa
*

parte
Departamentos Nombre NumEmpleados simbolo agregacin

NIF
Nombre

Agregacin: propiedades
42

Las propiedades ms significativas de la agregacin son:


Transitiva

(Si A es parte de B y B de C entonces A es parte de C) Antisimtrica (si A es parte de B entonces B no puede ser parte de A).
Documento n Parrafo n Sentencia

Tipos de agregacin
43

Se pueden dar dos tipos de relaciones de agregacin.


Inclusiva o fsica (composicin): cada componente puede pertenecer a lo sumo a un compuesto. La destruccin del compuesto implica la destruccin de las partes. Referencial o de catlogo: los componentes son reutilizables a lo largo de distintos compuestos. No estn relacionados los tiempos de vida.

Agregacin y composicin
44

Polgono 1..*

Polgono Apariencia Color Relleno 1..* { ordenado } 3+ Punto

{ ordenado } 3+
Punto Apariencia

Color Relleno

Referencial o inclusiva?
45

0..n

0..1 Pieza fsica 0..1 Describe 0..n

Pieza de catlogo
0..n

n model

n serie

0..n

46

Generalizacin / Especializacin

Generalizacin
47

Las jerarquas de clases permiten gestionar la complejidad mediante un ordenamiento taxonmico. A partir de un conjunto de clases, si estas tienen en comn una serie de atributos y operaciones, por generalizacin se puede crear una versin ms general (superclase) de las clases iniciales (subclases). Los atributos y operaciones comunes a estas se sitan en la superclase y son compartidos por todas las subclases.

Especializacin
48

La especializacin es la relacin contraria, parte de una superclase y se dirige hacia un conjunto de subclases. Las subclases heredan los atributos y las operaciones definidas en la superclase, pudiendo aadir atributos y operaciones propios. Cada instancia de una clase tambin cumple que es una instancia de su superclase Discriminante: : atributo de enumeracin que indica qu propiedad de un objeto est siendo abstrada por una relacin de generalizacin. No son obligatorios.

Ejemplo discriminantes
49
Equip

nom fabricant pes cost


tipus dequip Bomba IntercanviadorCalor Tanc

pressi succi pressi descrrega mesura de flux

rea superficial dimetre del tub longitud de tub pressi del tub pressi superficial

...

volum pressi

tipus de bomba

Bomba centrfuga

Bomba Diafragma

Bomba Pist

...

dimetre impulsor nmero de fulles eix rotaci

material diafragma

longitud del pist dimetre del pist nmero de cilindres

Ejemplo discriminantes
50
Equip
nom fabricant pes cost tipus dequip Bomba IntercanviadorCalor Tanc

pressi succi pressi descrrega mesura de flux

rea superficial dimetre del tub longitud de tub pressi del tub pressi superficial

...

volum pressi

tipus de bomba

Bomba centrfuga dimetre impulsor nmero de fulles eix rotaci

Bomba Diafragma material diafragma

Bomba Pist longitud del pist dimetre del pist nmero de cilindres

...

Ejemplo reescritura
51
Figura color posicin centro grosor dibujo mover seleccionar rotar visualizar Dimensin Dimensin 1 orientacin cambiarEscala Dimensin 2 orientacin tipo llenado llenar cambiarEscala

Dimensin 0

Punto visualizar

Linea extremos visualizar

Arco radio ngulo inicial ngulo arco visualizar

Polgono nmerolados vrtices visualizar

Crculo dimetro rotar visualizar

Especializacin vs Herencia
52

La relacin de especializacin se emplea en la fase de modelado de un sistema, mientras que la relacin de herencia se ve como un mecanismo de reutilizacin de cdigo en la fase de implementacin o diseo.

Anlisis

Punt color posicio

Diseo

Figura
color posicio

moure seleccionar visualitzar

moure seleccionar visualitzar

Cercle

Quadrat

Punt

Cercle

Quadrat

dimetre visualitzar

costat visualitzar
visualitzar

dimetre
visualitzar

costat
visualitzar

Especializacin completa/incompleta
53

Dos tipos de restricciones:

Completa: Todos los hijos de la generalizacin se han especificado en el modelo


Persona

sexo { completa }

Hombre

Mujer

Incompleta: No se han especificado todos los hijos y se permiten hijos adicionales


rbol { incompleta }

Nogal

Pino

Olmo

Especializacin dinmica
54

Se habla de especializacin dinmica cuando un objeto puede cambiar de clase dentro de una jerarqua de subclases.
trabajo <<dinmica>>

sexo { completa }

Persona

Ingeniero

Director

Hombre

Mujer

Vendedor

55

Clases abstractas

Clase abstracta
56

Es una clase que cumple


Tiene

al menos una operacin sin cdigo (un mtodo abstracto). No puede instanciarse (sus clases derivadas s que podran, a no que sean ellas mismas abstractas) .

Se utilizan para definir operaciones o atributos que sern heredadas por sus subclases.

Ej. Clase abstracta


57

Todas sus subclases concretas deben suministrar la implementacin de la operacin.


Empleado ganancias anuales calcular s ueldo {abstracto}

Empleado por horas paga por horas paga horas extras calcular s ueldo

Empleado autnomo paga mens ual calcular s ueldo

Empleado asalariado paga semanal calcular s ueldo

58

Herencia mltiple

Herencia mltiple
59

Cuando una clase tiene ms de una clase antecesora directa. La nueva clase hereda la unin de los atributos y operaciones definidos en las clases antecesoras. Una caracterstica de una clase que llegue por distintas vas slo se heredar una vez.

Solapamiento de clases
60

Se produce cuando una clase hereda de 2 o ms clases con un antecesor comn Puede producir conflictos de nombre. Mejor no resolverlos durante la implementacin an en el caso de disponer de mecanismo de resolucin.
Vehculo

solapamiento

Vehculo Terrestre

Vehculo Acutico

Coche

Vehculo Anfibio

Barco

Evitando la herencia mltiple


61

Si el lenguaje de implementacin no posee herencia mltiple se puede reestructurar el modelo de objetos para eliminarla.
Empleado estado s alario

Empleado por horas

Empleado asalariado

Empleado autonomo

estado pens ion

Empleado con pension

Empleado sin pension

Empleado por horas con pension

Usando agregacin
62

Una superclase con generalizaciones independientes se refunde en forma de agregado, en el cual cada componente sustituye a una generalizacin.
Empleado Nomina Empleado Pensin Empleado

estado salario

estado pension

N. Empleado por horas

N. Empleado asalariado

N. Empleado autonomo

con pensin

sin pensin

Usando delegacin
63

Se puede heredar la clase ms importante y delegar el resto.


Empleado

Pensin Empleado

estado salario

estado pension

Empleado por horas

Empleado asalariado

Empleado autonomo

con pensin

sin pensin

Factorizacin
64

Se puede emplear una jerarqua de especializacin anidada, primero se factoriza por una generalizacin y despus por otra.
Empleado estado s alario

Empleado por horas

Empleado asalariado estado pens ion estado pens ion

Empleado autonomo

estado pens ion

Empleado por horas con pensin

Empleado por horas sin pensin

Empleado autonomo con pensin

Empleado autonomo sin pensin

65

Restricciones y asociaciones

exclusivas

Restriccin
66

Relacin funcional entre entidades del modelo de objetos. Suelen expresarse de forma declarativa aunque tambin se admiten las restricciones en lenguaje natural. Estas restricciones pueden hacer referencia al valor de los atributos o asociaciones de un objeto

Ej. Restricciones sobre atributos


67
Empleado Jefe
0..1

Ventana

Tarea

Sueldo

*
Subordinados

longitud anchura

prioridad

{ sueldo <= jefe.sueldo }

{ 0.8 <= longitud/anchura <= 1.5 }

{ la prioridad no aumenta a lo largo del tiempo }

Tambin se utilizan entre relaciones de asociacin.


*

Miembro-de

Persona {Subconjunto}
1 *

Comisin

Presidente-de

Asociaciones exclusivas
68

Una asociacin exclusiva (or-asociacin) est formada por un conjunto de asociaciones que relacionan una clase inicial (fuente) con una serie de clases destino (objetivo). Tomado un objeto de la clase fuente ste est relacionado a lo sumo con un objeto de una clase objetivo.
Indice
* *

Indice

0..1

ItemIndice

OR
0..1 0..1

Cluster

Tabla

Cluster

Tabla

69

Interfaces

Interfaz
70

Coleccin de operaciones que se usa para especificar un servicio de una clase o una componente
No

proporciona ni estructura (atributos [salvo constantes]) ni implementacin

Ejemplos notacin
71
ISensor IUnknown IOrtografa

Sensores::IDestino Red::IRouter

Vista como una clase estereotipada: Cuando las operaciones y/o sus argumentos son importantes en el modelo
interfaz IGestorFlujoURL +abrirConexin() +analizarURL() +establecerURL() +aFormatoExterno()

interfaz INio +comer() +dormir() +evacuar()

Relaciones entre interfaces


72

Generalizacin: herencia entre interfaces. Dependencia: cuando una clase/componente necesita/hace uso de los servicios proporcionados por una interfaz. Realizacin: cuando una clase/componente implementa/realiza los servicios definidos en una interfaz.

Realizacin
73

Una clase realiza o implementa un interfaz si implementa todos los mtodos declarados por ese interfaz (incluidos aquellos que pudiera heredar de otros interfaces)
<<Interfaz>>

List<T>
+get(int index):T

ArrayList<T>

LinkedList<T>

Ejemplo y notacin alternativa


74

You might also like