Beruflich Dokumente
Kultur Dokumente
INGENIERA DE LA PROGRAMACIN
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
Introduccin
Modelos estructurales
4
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
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
Pepe:Perso na 30 Pepe:Perso na 30
persona2
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()
Operaciones
Clases y instancias
11
Una clase es una abstraccin Un objeto es una manifestacin concreta de esa abstraccin.
Houston: Ciutat
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]
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.
Matrcula color
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
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
TIENE UN
Agregacin Uso
ES UN
Herencia
Composicin
Dependencia
Agregacin
Composicin Herencia
Uso y dependencia
Agregacin y Composicin Herencia
Otras relaciones
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
multiplicidad
Asociaciones y enlaces
26
Diagrama de instancias
Ba: Aeroport Ge: Aeroport
NomAeroport: Barajas
CodiAeroport: BA
Madrid: Ciutat
Dona servei
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
* *
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
asociaciones
Lenguaje
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
Roles
35
Son obligatorios para distinguir asociaciones distintas entre un mismo par de clases.
destinoDescripcin 1
origenDescripcin
Persona
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.
Cuenta
N de cuenta
Banco
1 0..1
Cuenta
N de cuenta
NombreBanco
Cualificacin
39
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
(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
Agregacin y composicin
44
Polgono 1..*
{ ordenado } 3+
Punto Apariencia
Color Relleno
Referencial o inclusiva?
45
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
rea superficial dimetre del tub longitud de tub pressi del tub pressi superficial
...
volum pressi
tipus de bomba
Bomba centrfuga
Bomba Diafragma
Bomba Pist
...
material diafragma
Ejemplo discriminantes
50
Equip
nom fabricant pes cost tipus dequip Bomba IntercanviadorCalor Tanc
rea superficial dimetre del tub longitud de tub pressi del tub pressi superficial
...
volum pressi
tipus de bomba
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
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
Diseo
Figura
color posicio
Cercle
Quadrat
Punt
Cercle
Quadrat
dimetre visualitzar
costat visualitzar
visualitzar
dimetre
visualitzar
costat
visualitzar
Especializacin completa/incompleta
53
sexo { completa }
Hombre
Mujer
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
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.
Empleado por horas paga por horas paga horas extras 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
Si el lenguaje de implementacin no posee herencia mltiple se puede reestructurar el modelo de objetos para eliminarla.
Empleado estado s alario
Empleado asalariado
Empleado autonomo
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 asalariado
N. Empleado autonomo
con pensin
sin pensin
Usando delegacin
63
Pensin Empleado
estado salario
estado pension
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 autonomo
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
Ventana
Tarea
Sueldo
*
Subordinados
longitud anchura
prioridad
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
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()
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>