Professional Documents
Culture Documents
Clases
Modelado Conceptual:
Organizacin del conocimiento del dominio del problema en un conjunto de abstracciones ordenadas de forma que se obtiene un conocimiento ms profundo del problema
Clasificacin
El mundo real puede ser visto desde abstracciones diferentes (subjetividad) Mecanismos de abstraccin: Clasificacin / Instanciacin Composicin / Descomposicin Agrupacin / Individualizacin Especializacin / Generalizacin
Clases
Qu es una clase?
Es una descripcin de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semntica.
Nombre Atributos Operaciones
Son una abstraccin de las cosas que forman parte del vocabulario del dominio.
Clases
La clase define el mbito de definicin de un conjunto de objetos Cada objeto pertenece a una clase Los objetos se crean por instanciacin de las clases
Clases
Atributo Es una propiedad, cualidad o caracterstica asociada a una clase, identificada por un nombre que describe un rango de valores que puede tomar la propiedad. El nombre de un atributo es un nombre corto o expresin nominal extrada del dominio.
Por lo general se suele poner la primera letra de cada palabra en maysculas, excepto de la primera (precio; tipoProducto)
Junto al nombre se pueden incluir otras caractersticas (tipo, valor por defecto, etc.)
Clases
Operacin Es una implementacin de un servicio que puede ser requerido a cualquier objeto de la clase para que muestre un comportamiento. Generalmente la invocacin de una operacin sobre un objeto produce un cambio en los datos o el estado de ste. El nombre de una operacin es un verbo o expresin verbal extrado del dominio.
Por lo general se suele poner la primera letra de cada palabra en maysculas, excepto de la primera (comprar; calcularImporte)
Clases
Operacin Junto al nombre se puede especificar su signatura.
Nombre, tipo y valores por defecto de los parmetros y en ciertos casos necesarios tipo de retorno.
10
Clases
Especificacin de una clase Para facilitar la comprensin no se suelen mostrar todos los atributos y operaciones de la clase, o incluso a veces slo se muestra el nombre de la clase.
Se puede indicar explcitamente que hay ms atributos o propiedades mediante: ...
11
Clases
Identificacin de clases
El objetivo es identificar los conceptos significativos del dominio. Dos posibles estrategias: A partir de una lista de categoras. A partir de identificacin de frases nominales.
12
Clases
Lista de categoras conceptos
Categora del concepto Objetos fsicos tangibles Especificaciones o descripciones de cosas Lugares Transacciones Lnea o elemento de una transaccin Papeles de las personas
Ingeniera del Software I (4 I.I.)
Ejemplo Camin Descripcin del producto Tienda, Almacn, Delegacin Venta, Pago, Reserva Lnea de una Venta Vendedor, Camionero
13
Clases
Lista de categoras conceptos
Categora del concepto Contenedores de cosas Cosas dentro del contenedor Otros sistemas software externos Conceptos abstractos Organizaciones Eventos
Ingeniera del Software I (4 I.I.)
Ejemplo Tienda, Almacn Producto Sistema de autorizacin de tarjeta de crdito Hambre Dpto de Ventas Pago, Anulacin
14
Clases
Lista de categoras conceptos
Categora del concepto Procesos Reglas y polticas Catlogos Documentos, libros Instrumentos y servicios financieros Ejemplo Venta de un producto Poltica de reembolso por anulacin Catlogo de productos Manual de Personal, Ticket de compra Existencias, Lnea de crdito
15
Clases
Identificacin de frases nominales Este mtodo consiste en identificar en las descripciones textuales del dominio nombre o frases nominales y considerarlas como conceptos. En esta estructura los verbos representan asociaciones entre conceptos. Ejemplo.El cliente realiza los pedidos Cliente
Ingeniera del Software I (4 I.I.)
Realiza
Pedido
16
Clases
Errores y problemas en la identificacin de clases
Incorporacin de documentos como clases.
Incorporarlos slo si cumplen un papel especial respecto a las reglas del negocio (ejemplo.- un recibo de compra puede ser necesario para realizar una devolucin).
17
Clases: Encapsulacin
La encapsulacin presenta dos ventajas bsicas: Se protegen los datos de accesos indebidos El acoplamiento entre las clases se disminuye Favorece la modularidad y el mantenimiento Los atributos de una clase no deberan ser manipulables directamente por el resto de objetos
18
Clases: Encapsulacin
Los niveles de encapsulacin estn heredados de los niveles de C++:
(-) Privado : es el ms fuerte. Esta parte es totalmente invisible (excepto para clases friends en terminologa C++) (#) Los atributos/operaciones protegidos estn visibles para las clases friends y para las clases derivadas de la original (+) Los atributos/operaciones pblicos son visibles a otras clases (cuando se trata de atributos se est transgrediendo el principio de encapsulacin)
19
Clases: Encapsulacin
Ejemplo:
Reglas de visibilidad + Atributo pblico : int # Atributo protegido : int - Atributo privado : int + "Operacin pblica" # "Operacin protegida" - "Operacin privada"
20
Asociacin
La asociacin expresa una conexin bidireccional entre objetos Una asociacin es una abstraccin de la relacin existente en los enlaces entre los objetos
Univ. de Murcia:Universidad Un enlace Antonio:Estudiante
Estudiante
22
Asociacin
Especifica que los objetos de una clase estn conectados con objetos de otra clase. Puede verse como:
unin o conexin de ideas establece las relaciones entre los objetos necesarios para llevar a cabo un conjunto de requerimientos
23
Asociacin
Nombre.- describe la relacin existente entre las clases . Para aclarar su significado suele ser interesante indicar la direccin de lectura.
Trabaja en Empresa Persona
24
Asociacin
Rol.- es la cara que la clase de un extremo de la relacin presenta a la clase del otro extremo. Una clase puede jugar el mismo o diferentes roles en otras asociaciones.
Persona
25
Asociacin
Multiplicidad.- indica el nmero de objetos que puede participar en una instancia de la relacin.
En una relacin se indican tantas multiplicidades como clases participen en la asociacin. En la multiplicidad se indican los lmites inferior y superior de los objetos participantes.
1 -> exactamente 1 0,1 -> cero o uno 0..4 -> entre cero y cuatro 3,7 -> tres o siete 0..* -> mayor o igual de cero (por defecto) 1..* -> mayor o igual a uno 0..3, 7, 9..* -> cualquier nmero menos 4, 5, 6 y 8
Asociacin
Multiplicidad.Cuando se indica una multiplicidad en un extremo de la asociacin, se est especificando que, para cada objeto de la clase en el extremo opuesto, debe haber tantos objetos en este extremo
1 Empresa 1..* Persona
Empresa 1 Empresa 2
27
Asociacin
Agregacin.- describe asociaciones en las que existe una jerarqua de composicin en la que una clase representa el todo y otras las partes que lo constituyen.
Empresa 1 * Departamento Parte Todo
28
Asociacin
Avin
0,1 0..4
Motor
0..n
Pasajeros
Vuelo
1..n 1..n
SegmentoVuelo
29
Agregacin: Caracterizacin
Caracterizaciones relacionadas con la multiplicidad
Multiplicidad Mnima Objeto Agregado 0 flexible > 0 estricta Multiplicidad (mn , mx )
a a
(mnc, mxc)
Objeto Componente
Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases 30
31
Asociacin
Composicin.- es un tipo especial de agregacin en la que la existencia de las partes est ligada a la del todo.
El objeto parte puede pertenecer a un todo nico, es ms se espera que las parte vivan y mueran con el todo.
Cliente Todo
32
Asociacin
Otras caractersticas Las relaciones pueden tener asociados atributos.
33
Asociacin
Lista de categoras asociaciones
Categora de asociacin A es una parte fsica de B A es una parte lgica de B A est fsicamente contenido en B A est contenido lgicamente en B A es una descripcin de B Ejemplo Ala-Avin; TramoVuelo-RutaVuelo Producto-Estante; Pasajero-Avin Producto-Catlogo DescripcinProducto-Producto
Asociacin
Lista de categoras asociaciones
Categora de asociacin A se conoce/introduce/ registra/presenta/captura en B A es miembro de B A es una subunidad organizacional de B A usa o dirige a B A se comunica con B A se relaciona con una transaccin B
Ingeniera del Software I (4 I.I.)
Ejemplo Reserva-ListaPasajeros; Venta-Caja Piloto-Avin; Vendedor-Tienda Departamento-Tienda; Mantenimiento-LneaArea Piloto-Avin Cliente-Vendedor; AgenteReserva-Pasajero Pago-Pedido; Pasajero-Billete
35
Asociacin
Lista de categoras asociaciones
Categora de asociacin A es una transaccin relacionada con otra transaccin B A est contiguo a B A es propiedad de B Ejemplo Pago-Venta; Reserva-Cancelacin Ciudad-Ciudad Avin-LineaArea;
36
Asociacin
Ejemplo:
marido casado-con 0.. 1 mujer jefe 0.. 1 Administra 0.. 1
Persona * nombre s. s.
trabaja-para emplea-a
* Compaa
nombre direccin
empleado
37
Asociacin Cualificada
Aerolnea
nro_billete
0..1
Viajero
Tablero Ajedrez
fila columna
Cuadro
38
Ejemplos
39
... Ejemplos
40
Ejemplos
Agregacin
Polgono
1 contiene 3.. *
{ordenado}
Punto
Persona Empresa
*
Cuenta
*
or
1
Asociacin excluyente
Usuario
est-autorizado-en
Estacin
Clase de asociacin
Ingeniera del Software I (4 I.I.)
Jerarquas de Generalizacin/Especializacin
Permiten gestionar la complejidad mediante un ordenamiento taxonmico Se obtiene usando los mecanismos de abstraccin de Generalizacin y/o Especializacin La Generalizacin consiste en factorizar las propiedades comunes de un conjunto de clases en una clase ms general
42
... Generalizacin/Especializacin
Indica una relacin entre un elemento ms general (supertipo) y un caso ms especfico (subtipo) de ese elemento. A veces se le denomina relacin es-un-tipo-de. Los objetos hijos se pueden emplear en cualquier lugar que pueda aparecer el padre, pero no a la inversa. Las clases hijas heredan las caractersticas (atributos, operaciones y relaciones) de sus clases padres.
43
... Generalizacin/Especializacin
La generalizacin produce una estructura jerrquica en la que existen clases sin padres (clase base) y clases sin hijos (clases especializadas u hojas).
Figura posicin: Punto mover() dibujar()
44
... Generalizacin/Especializacin
Cuando deberamos definir un subtipo? (Especializacin) Debemos asegurarnos que esta particin es til en el dominio del problema. Motivos para realizar la particin:
El subtipo tiene otros atributos. El subtipo tiene otras asociaciones. Se puede especificar un comportamiento especfico para el subtipo o se reacciona ante l de manera diferente a como se hara ante el supertipo.
45
... Generalizacin/Especializacin
Cuando deberamos definir un supertipo? (Generalizacin) Motivos para realizar la generalizacin:
Los conceptos asociados a subtipos potenciales representan variaciones de un concepto semejante. Los conceptos comparten entre si varios atributos o comportamientos semejantes. Existen relaciones compartidas por los conceptos candidatos a subtipos que pueden generalizarse y asociarse al supertipo.
46
... Generalizacin/Especializacin
Clases abstractas Representan clases que no contienen objetos.Slo pueden aparecer dentro de jerarquas de generalizacin. Se pueden asociar a clases de una jerarqua en la que los objetos siempre deben pertenecer a uno de los subtipo definidos.
Figuras
Rectngulos
Crculos
Polgonos
47
... Generalizacin/Especializacin
Clases abstractas Se representan poniendo el nombre de la clase en cursiva o mediante el valor etiquetado {abstract} debajo del nombre de la clase.
Figura posicin: Punto mover() dibujar() Figura {abstract} posicin: Punto mover() dibujar()
48
... Generalizacin/Especializacin
Estructuras mltiples: La generalizacin puede ser:
simple.- un subtipo solo tiene un supertipo (padre). mltiple.- un subtipo puede tener varios supertipos Persona (padres).
Persona nombre direccin nombre direccin
Accionista nmeroAcciones
EmpleadoAccionista
49
... Generalizacin/Especializacin
Nombres usados: clase padre - clase hija, superclase - subclase, clase base - clase derivada Las subclases heredan caractersticas de sus superclases, es decir, atributos y operaciones (y asociaciones) de la superclase estn disponibles en sus subclases
50
... Generalizacin/Especializacin
La Generalizacin y Especializacin son equivalentes en cuanto al resultado: la jerarqua y herencia establecidas Generalizacin y Especializacin no son operaciones reflexivas ni simtricas pero s transitivas
51
... Generalizacin/Especializacin
A bstracciones ms generales. ve hiculo
vehiculo terrestre
vehiculo a reo
camion
coche
avion
helicoptero
52
... Generalizacin/Especializacin
La especializacin es una tcnica muy eficaz para la extensin y reutilizacin
coche
funcionando
estropea do
... Generalizacin/Especializacin
La nocin de clase est prxima a la de conjunto Dada una clase, podemos ver el conjunto relativo a las instancias que posee o bien relativo a las propiedades de la clase Generalizacin y especializacin expresan relaciones de inclusin entre conjuntos
54
... Generalizacin/Especializacin
Particionamiento del espacio de objetos => Clasificacin Esttica Particionamiento del espacio de estados de los objetos => Clasificacin Dinmica En ambos casos consideraremos generalizaciones/especializaciones disjuntas
55
... Generalizacin/Especializacin
Un ejemplo de Clasificacin Esttica:
vehiculo areo
avion
helicoptero
56
... Generalizacin/Especializacin
Un ejemplo de Clasificacin Dinmica:
coche
funcionando
estrop ea do
57
... Generalizacin
Extensin: Posibles instancias de una clase Intensin: Propiedades definidas en una clase
A
58
... Generalizacin
Clasificacin Esttica
C0
C1
Cn
59
... Generalizacin
Clasificacin Dinmica
C0
ext(C0) = ext(Ci)
{ dinmica }
completa
C1
Cn
60
... Generalizacin
Ejemplo: varias especializaciones a partir de la misma clase padre, usando discriminadores:
Comercial Militar
estructura
Avin
Helicptero
61
... Generalizacin/Especializacin
En la Especializacin Esttica, el objeto es instancia de la subclase desde su creacin y la superclase en las que fue creado. Esta pertenencia es inmutable Puede haber ms de una especializacin esttica o dinmica a partir de la misma superclase
62
... Generalizacin/Especializacin
En la Especializacin Dinmica un objeto puede migrar durante su vida entre las distintas subclases de la especializacin La migracin puede definirse en funcin de su estado o de los eventos que le acontezcan
63
... Generalizacin/Especializacin
Ejemplo: especializaciones dinmicas de la misma superclase:
de m enos de 1000km s coche
64
... Generalizacin/Especializacin
Un ejemplo combinado:
vehiculo
esttica
militar
camion
coche
dinmica
funcionando
estropeado
65
... Generalizacin/Especializacin
El siguiente es un ejemplo de clasificacin no equilibrada:
vehiculo terrestre
ca mio n
coche
Harley D avidson
66
67
Herencia Mltiple
Uso disciplinado de la herencia mltiple: clasificaciones disjuntas con clases padre en hojas de jerarquas alternativas
Bpedo Cuadrpedo nro patas Con Pelos cubertura Con Plumas cobertura cobertura Con Escamas Animal comida Carnvoro comida nro patas Herbvoro
Conejo
68
Principio de Sustitucin
El Principio de Sustitucin de Liskow (1987) afirma que: Debe ser posible utilizar cualquier objeto instancia de una subclase en el lugar de cualquier objeto instancia de su superclase sin que la semntica del programa escrito en los trminos de la superclase se vea afectado.
69
Principio de Sustitucin
Dado que los programadores pueden introducir cdigo en las subclases redefiniendo las operaciones, es posible introducir involuntariamente incoherencias que violen el principio de sustitucin El polimorfismo que veremos a continuacin no debera implementarse sin este principio
70
Polimorfismo
El trmino polimorfismo se refiere a que una caracterstica de una clase puede tomar varias formas El polimorfismo representa en nuestro caso la posibilidad de desencadenar operaciones distintas en respuesta a un mismo mensaje Cada subclase hereda las operaciones pero tiene la posibilidad de modificar localmente el comportamiento de estas operaciones
71
Polimorfismo
Ejemplo: todo animal duerme, pero cada clase lo hace de forma distinta
Zoo 1 * Animal
?
dormir
?
Len Oso Tigre
72
Polimorfismo
Zoo 1 * Animal Dormir() { }
Len
Oso
Tigre
Dormir() { en un rbol }
73
Polimorfismo
La bsqueda automtica del cdigo que en cada momento se va a ejecutar es fruto del enlace dinmico El cumplimiento del Principio de Sustitucin permite obtener un comportamiento y diseo coherente
74
75
Diagramas de Clases.
Ejemplo
* 1..*
Diagrama de Clases
set elli b ed rod edneV 1 otoliP 2 . .1 * avre seR * 1 * oleuV * * 1
ro toM
4 . .1
1 nivA
agrac ed nivA
Empresa
1 1..*
Departamento nombre
0,1 *
Se ubica
*
{subconjunto}
miembro 1..* 1
director
Accionista nmeroAcciones
76
Diagramas de Clases.
Ejemplo
destino Misin nmero descripcin horario
1..n 1..n
Diagrama de Clases
set elli b ed rod edneV 1 otoliP 2 . .1 * avre seR * 1 * oleuV * * 1
ro toM
4 . .1
1 nivA
agrac ed nivA
origen
destino origen
0..n
0,1
tiene
1 0,1
Trayectoria fecha
2..n
adquiere
0..n
Persona nombreApellidos
Particular
Pasajeros asiento
77
Clase
UML permite modelar una arquitectura a tres capas utilizando estereotipos para las clases en cada una de las capas. Se distinguen tres estereotipos bsicos: o interfaz o entidad o control
78
Clase
Se utilizan para modelar la interaccin entre el sistema y sus actores Modelan las partes del sistema que dependen de los actores y, por tanto, renen los requisitos en los lmites del sistema. Por tanto, las interfaces de usuario y las interfaces de comunicacin quedan aisladas en este tipo de clases. Cada clase interfaz debera estar asociada al menos a un actor.
79
Clase
Pueden representar abstracciones de ventanas, formularios, interfaces de comunicacin, sensores, etc., pero no deben detallarse en exceso. Por tanto, no se est pidiendo un prototipo final de la interfaz.
80
Clase
Se utilizan para modelar la informacin que posee una vida ms larga y que a menudo es persistente. Se corresponden con conceptos del dominio del problema. Se pueden derivar directamente de una clase de entidad del negocio, aunque pueden corresponder a un subconjunto de ellas. Puede tener un comportamiento relativo a la informacin que representa.
81
Clase
Representa la coordinacin, secuencia, transacciones y control de la lgica del negocio compleja que implica a varios objetos. Se utilizan para encapsular el control de un caso de uso concreto. Se pueden utilizar tambin para representar derivaciones o clculos complejos que no pueden asociarse a ninguna informacin (clase entidad) concreta.
82
Clase
Una clase de anlisis y sus objetos participan en varias realizaciones de casos de uso. Algunas responsabilidades, atributos y asociaciones suelen ser slo relevantes para una nica realizacin de caso de uso. Es importante, por tanto, durante el anlisis coordinar todos los requisitos sobre una clase y sus objetos que puede estar asociados a diferentes casos de uso.
Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases 83
Clase
84
Paquetes
Qu es un paquete?
Paquete
Es un mecanismo que permite organizar los elementos de modelado en bloques mayores que se pueden manipular en grupo. Permiten controlar la visibilidad de los elementos de un grupo desde el exterior. Agrupan elementos cercanos semnticamente y que se suelen cambiar juntos. Son cohesivos y poco acoplados.
Reglas del negocio
85
Paquete
Paquete
Un paquete puede contener otros elementos: clases, interfaces, componentes, nodos, colaboraciones, casos de uso, diagramas e incluso otros paquetes. Cada elemento pertenece exclusivamente a un nico paquete Forma un espacio de nombres nico
Dentro de l no pueden existir dos elementos de la misma categora con el mismo nombre.
Permiten controlar la visibilidad de los elementos de un grupo desde el exterior. Pueden establecerse jerarqua de paquetes
No ms de tres niveles.
Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases 86
Paquete
Importacin
Paquete
Para poder acceder a los elementos contenidos de un paquete debe importarse dicho paquete.
Importacin: concede un permiso de un solo sentido para que los elementos de un paquete puedan acceder a los elementos de otro. Se utiliza el estereotipo import
Las dependencias de importacin y acceso no son transitivas Si un elemento es visible en un paquete lo es a todos los paquetes contenido en ese paquete
87
Paquete
Visibilidad
Paquete
Normalmente los elementos contenidos en un paquete son pblicos (+), es decir, son visibles por cualquier paquete que importe al paquete contenedor.
El conjunto de partes pblicas constituye su interfaz.
Los elementos protegidos (#) slo pueden ser vistos por los hijos dentro de una jerarqua de herencia. Los elementos privados (-) no son visibles fuera del paquete donde se declaran. Los paquetes que son amigos (friend) de otro pueden ver todos los elementos de ste, sin importar cul sea su visibilidad.
Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases 88
Paquete
Generalizacin
Paquete
Pueden definirse jerarquas de generalizacin al igual que suceden con otros elementos como clases, casos de uso, etc. Los elementos ms especializados heredan los elementos pblicos y protegidos del paquete ms general. Los paquetes ms especializados pueden reemplazar a los elementos ms generales y aadir otros. Un paquete generalizado puede utilizarse dondequiera que se use un paquete ms general.
Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases 89
Paquete
Modelado de grupos de elementos
Paquete
Examinar los elementos de una determinada vista arquitectnica en busca de grupos de elementos cercanos desde el punto de vista conceptual o semntico. Englobar cada uno de esos grupos en un paquete. Para cada paquete definir los elementos que pueden ser accedidos desde fuera. En caso de duda ocultar el elemento. Conectar explcitamente los paquetes que dependen de otros a travs de dependencias de importacin. En caso de encontrar familias de paquetes utilizar la generalizacin.
Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases 90
Paquete (Ejemplos)
Cliente Servicios de Usuario
Paquete
<<import>>
MacGUI
91
Paquete (Ejemplos)
E d it or V entanas
Paquete
Co n tro l a d o r E l e m e n to s
Motif
MSWindows
Do m i n i o N cl e o Wi n d o ws
N cl e o M o ti f
MS W indow (fro m V e n ta n a s)
M o ti f (fro m V e n ta n a s)
92
Paquete (Ejemplos)
Paquete
Corrector Ortogrfico
<<service package>> <<service package>>
Corrector Ingls
Corrector Espaol
93