You are on page 1of 47

Ingeniera del Software I (4 I.I.

MODULO 2: Anlisis y Diseo OO con UML


Tema 8: Diagramas de Clases

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

Ingeniera del Software I (4 I.I.)

Clasificacin
El mundo real puede ser visto desde abstracciones diferentes (subjetividad) Mecanismos de abstraccin: Clasificacin / Instanciacin Composicin / Descomposicin Agrupacin / Individualizacin Especializacin / Generalizacin

La clasificacin es uno de los mecanismos de abstraccin ms utilizados


Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases 3

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.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

Ingeniera del Software I (4 I.I.)

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

Clases: Notacin Grfica


Cada clase se representa en un rectngulo con tres compartimientos:
nombre de la clase atributos de la clase operaciones de la clase
motocicleta color cilindrada velocidad maxima arrancar acelerar frenar

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

Ingeniera del Software I (4 I.I.)

Clases: Notacin Grfica


Otros ejemplos:
lista pila primero ultimo aadir quitar cardinalidad

apilar desapilar cardinalidad

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de 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.)

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

Ingeniera del Software I (4 I.I.)

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)

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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.

SensorTemperatura reiniciar() ponerAlarma(t: Temperatura) valor() : Temperatura

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

10

Ingeniera del Software I (4 I.I.)

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: ...

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

12

Ingeniera del Software I (4 I.I.)

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

Mdulo 2. Tema 8: Diagramas de Clases

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

Mdulo 2. Tema 8: Diagramas de Clases

14

Ingeniera del Software I (4 I.I.)

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

Mdulo 2. Tema 8: Diagramas de Clases

Ingeniera del Software I (4 I.I.)

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).

Distincin entre atributo y clase.


Si el concepto identificado no se describe mediante un simple nmero o texto descriptivo, posiblemente sea una clase.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

18

Ingeniera del Software I (4 I.I.)

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)

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

19

Clases: Encapsulacin
Ejemplo:
Reglas de visibilidad + Atributo pblico : int # Atributo protegido : int - Atributo privado : int + "Operacin pblica" # "Operacin protegida" - "Operacin privada"

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

20

Ingeniera del Software I (4 I.I.)

Relaciones entre Clases


Los enlaces entre objetos pueden representarse entre las respectivas clases Expresa una conexin entre las clases del dominio. Formas de relacin entre clases: Asociacin y Agregacin (vista como un caso particular de asociacin) Generalizacin/Especializacin

Las relaciones de Agregacin y Generalizacin forman jerarquas de clases


Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases 21

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

Universidad Una asociacin

Estudiante

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

22

Ingeniera del Software I (4 I.I.)

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

Pueden incluirse cuatro adornos a la asociacin.


Nombre.- Se utiliza para describir la naturaleza de la asociacin. Rol.- Es el papel especfico que juega una clase en dicha relacin. Multiplicidad.-Indica cuntos objetos pueden conectarse a travs de una instancia de la asociacin. Agregacin.-Permite modelar relaciones especiales de tipo todo/parte.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

Puede no ser necesario su inclusin si se indican los nombre de los roles.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

24

Ingeniera del Software I (4 I.I.)

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.

Empresa Patrn Empleado

Persona

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

La multiplicidad mnima >= 1 establece una restriccin de existencia


Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases 26

Ingeniera del Software I (4 I.I.)

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

Persona 1 Persona 2 Persona 3

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

La existencia de una agregacin no liga la existencia del todo y sus partes.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

28

Ingeniera del Software I (4 I.I.)

Asociacin
Avin

Agregaciones tpicas.Partes que componen un objeto de nivel superior


Avin
0,1

0,1 0..4

Motor

Elementos contenidos en otro nivel superior

0..n

Pasajeros

Vuelo

Miembros de una coleccin o conjunto.

1..n 1..n

SegmentoVuelo

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

29

Agregacin: Caracterizacin
Caracterizaciones relacionadas con la multiplicidad
Multiplicidad Mnima Objeto Agregado 0 flexible > 0 estricta Multiplicidad (mn , mx )
a a

Mxima 1 disjunto > 1 no disjunto

Multiplicidad Mnima 0 nulos permitidos > 0 nulos no permitidos

(mnc, mxc)

Multiplicidad Mxima 1 univaluado > 1 multivaluado

Objeto Componente
Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases 30

Ingeniera del Software I (4 I.I.)

... Agregacin: Caracterizacin


En UML slo se distingue entre agregacin y composicin (aggregate composition), siendo esta ltima disjunta y estricta Adems se una agregacin se podra caracterizar segn: Puede el objeto parte comunicarse directamente con objetos externos al objeto agregado? No => inclusiva Si => no inclusiva Puede cambiar La composicin del objeto agregado? Si => dinmica No => esttica

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

0..* CuentaBancaria Parte

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

32

Ingeniera del Software I (4 I.I.)

Asociacin
Otras caractersticas Las relaciones pueden tener asociados atributos.

Empresa 1..* * Empleado Empleo desde hasta

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

A es un elemento de una lnea LneaPedido-Pedido en una transaccin B


Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases 34

Ingeniera del Software I (4 I.I.)

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

Mdulo 2. Tema 8: Diagramas de Clases

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;

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

36

Ingeniera del Software I (4 I.I.)

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

37

Asociacin Cualificada

Aerolnea

nro_billete

0..1

Viajero

Tablero Ajedrez

fila columna

Cuadro

Reduce la multiplicidad del rol opuesto al considerar el valor del cualificador

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

38

Ingeniera del Software I (4 I.I.)

Ejemplos

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

39

... Ejemplos

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

40

Ingeniera del Software I (4 I.I.)

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.)

Autorizacin prioridad privilegios camb_privil


41

Mdulo 2. Tema 8: Diagramas de Clases

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

42

Ingeniera del Software I (4 I.I.)

... 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.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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()

Rectngulo esquina: Punto dibujar() Crculo radio:Float dibujar() Cuadrado


Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases

Polgono puntos: Lista dibujar()

44

Ingeniera del Software I (4 I.I.)

... 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.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

46

Ingeniera del Software I (4 I.I.)

... 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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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()

Rectngulo esquina: Punto dibujar() Crculo radio:Float dibujar()


Ingeniera del Software I (4 I.I.) Mdulo 2. Tema 8: Diagramas de Clases

Polgono puntos: Lista dibujar()

48

Ingeniera del Software I (4 I.I.)

... 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

Empleado fechaNacimiento identificacionUsuario password

Accionista nmeroAcciones

Empleado Accionista fechaNacimiento identificacionUsuario password nmeroAcciones

EmpleadoAccionista fechaNacimiento identificacionUsuario password nmeroAcciones

EmpleadoAccionista

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

50

Ingeniera del Software I (4 I.I.)

... 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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

51

... Generalizacin/Especializacin
A bstracciones ms generales. ve hiculo

vehiculo terrestre

vehiculo a reo

camion

coche

avion

helicoptero

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

52

Ingeniera del Software I (4 I.I.)

... Generalizacin/Especializacin
La especializacin es una tcnica muy eficaz para la extensin y reutilizacin
coche

funcionando

estropea do

Caracterizacin de la generalizacin en UML:



Ingeniera del Software I (4 I.I.)

disjunta - no disjunta total (completa) - parcial (incompleta)


Mdulo 2. Tema 8: Diagramas de Clases 53

... 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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

54

Ingeniera del Software I (4 I.I.)

... 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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

55

... Generalizacin/Especializacin
Un ejemplo de Clasificacin Esttica:
vehiculo areo

avion

helicoptero

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

56

Ingeniera del Software I (4 I.I.)

... Generalizacin/Especializacin
Un ejemplo de Clasificacin Dinmica:

coche

funcionando

estrop ea do

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

57

... Generalizacin
Extensin: Posibles instancias de una clase Intensin: Propiedades definidas en una clase
A

int(A) int(B) ext(B) ext(A)


B

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

58

Ingeniera del Software I (4 I.I.)

... Generalizacin
Clasificacin Esttica
C0

ext(C0) = ext(Ci) completa


{ static }

ext(Ci) ext(Cj) = disjunta

C1

Cn

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

59

... Generalizacin
Clasificacin Dinmica
C0

ext(C0) = ext(Ci)
{ dinmica }

completa

extt(Ci) extt(Cj) = disjunta en t extt1(Ci) extt2(Cj) posiblemente no disjunta en diferentes instantes

C1

Cn

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

60

Ingeniera del Software I (4 I.I.)

... Generalizacin
Ejemplo: varias especializaciones a partir de la misma clase padre, usando discriminadores:
Comercial Militar

uso Vehculo Areo

estructura

Avin

Helicptero

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

62

Ingeniera del Software I (4 I.I.)

... 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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

63

... Generalizacin/Especializacin
Ejemplo: especializaciones dinmicas de la misma superclase:
de m enos de 1000km s coche

de m s de 1000 km s func ionando es tropeado

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

64

Ingeniera del Software I (4 I.I.)

... Generalizacin/Especializacin
Un ejemplo combinado:
vehiculo

comercial ve hiculo terre stre vehiculo areo e sttica

esttica

esttica a vio n he lico pte ro

militar

camion

de menos de 1000kms dinmica de ms de 1000 kms

coche

dinmica

funcionando

estropeado

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

65

... Generalizacin/Especializacin
El siguiente es un ejemplo de clasificacin no equilibrada:
vehiculo terrestre

ca mio n

coche

Harley D avidson

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

66

Ingeniera del Software I (4 I.I.)

Clasificacin Mltiple (herencia mltiple)


Se presenta cuando una subclase tiene ms de una superclase La herencia mltiple debe manejarse con precaucin. Algunos problemas son el conflicto de nombre y el conflicto de precedencia Se recomienda un uso restringido y disciplinado de la herencia. Java y Ada 95 simplemente no ofrecen herencia mltiple

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

68

Ingeniera del Software I (4 I.I.)

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.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

70

Ingeniera del Software I (4 I.I.)

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

71

Polimorfismo
Ejemplo: todo animal duerme, pero cada clase lo hace de forma distinta
Zoo 1 * Animal

?
dormir

?
Len Oso Tigre

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

72

Ingeniera del Software I (4 I.I.)

Polimorfismo
Zoo 1 * Animal Dormir() { }

Len

Oso

Tigre

Dormir() { sobre el vientre }

Dormir() { Sobre la espalda }

Dormir() { en un rbol }

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

74

Ingeniera del Software I (4 I.I.)

Clases vs. Objetos


Los Diagramas de Clases y los Diagramas de Objetos pertenecen a dos vistas complementarias del modelo Un Diagrama de Clases muestra la abstraccin de una parte del dominio Un Diagrama de Objetos representa una situacin concreta del dominio Cada objeto es instancia de una clase Ciertas clases (clases abstractas o diferidas) no pueden ser instanciadas

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

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

} a telpmo c , a tnu jsid {

1 aera aenL laic re moc nivA ratilim nivA

} a telpmo c ,a tnuj sid {

soreja sap ed nivA

agrac ed nivA

Empresa
1 1..*

Departamento nombre
0,1 *

Se ubica
*

Oficina direccin telfono

Persona nombre direccin

{subconjunto}

miembro 1..* 1

director

Accionista nmeroAcciones

Empleado fechaNacimiento identificacionUsuario password obtenerResgistrosPersonales RegistroPersonal historialEmpleos salario IinformacinSegura

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

76

Ingeniera del Software I (4 I.I.)

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

} a telpmo c , a tnu jsid {

1 aera aenL laic re moc nivA ratilim nivA

} a telpmo c ,a tnuj sid {

soreja sap ed nivA

agrac ed nivA

origen

destino origen

SegmentoVuelo nmero descripcin


1

FallosAvin fecha hora descripcin se asigna


0..n 0..n 1 0..n

Aeropuerto nombre ciudad destino origen Cliente


0..n

ElementoEmbarque nmero situacinActual


1

0..n

0,1

Avin nmero estado modelo capacidad

tiene
1 0,1

Trayectoria fecha

2..n

adquiere
0..n

Persona nombreApellidos

Carga peso tamao descripcin

PuntoEspacioAreo fecha hora posicin

Empresa razonSocial Ingeniera del Software I (4 I.I.)

Particular

Pasajeros asiento

Mdulo 2. Tema 8: Diagramas de Clases

77

Esterotipos para Diagramas de Clases

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

78

Ingeniera del Software I (4 I.I.)

Esterotipos para Diagramas de Clases


Clase de interfaz

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.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

79

Esterotipos para Diagramas de Clases


Clase de interfaz Representan abstracciones de los elementos de la interfaz, pero deben mantenerse a un nivel de abstraccin elevado.

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.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

80

Ingeniera del Software I (4 I.I.)

Esterotipos para Diagramas de Clases


Clase de entidad

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.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

81

Esterotipos para Diagramas de Clases


Clase de control

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.

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

82

Ingeniera del Software I (4 I.I.)

Esterotipos para Diagramas de Clases


Diagrama de clases asociado a la realizacin de un caso de uso

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

Esterotipos para Diagramas de Clases


Ejemplo

Clase

PedidosConfirmados GestorPedidos Factura

Pagos Comprador IU SolicitudPago GestorPagos

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

84

Ingeniera del Software I (4 I.I.)

Paquetes
Qu es un paquete?

Paquete

Reglas del negocio

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

85

Paquete

Paquete

Reglas del negocio

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

Ingeniera del Software I (4 I.I.)

Paquete
Importacin

Paquete

Reglas del negocio

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

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

87

Paquete
Visibilidad

Paquete

Reglas del negocio

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

Ingeniera del Software I (4 I.I.)

Paquete
Generalizacin

Paquete

Reglas del negocio

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

Reglas del negocio

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

Ingeniera del Software I (4 I.I.)

Paquete (Ejemplos)
Cliente Servicios de Usuario

Paquete

Reglas del negocio

+ Formulario de pedidos - Pedido

<<import>> <<import>> GUI Servicios de Datos + Ventana + Formulario # GestorEventos

<<import>>

WindowsGUI Servicios de Negocio + GUI::Ventana + Formulario # GUI::GestorEventos + VBForm

MacGUI

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

91

Paquete (Ejemplos)
E d it or V entanas

Paquete

Reglas del negocio

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)

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

92

Ingeniera del Software I (4 I.I.)

Paquete (Ejemplos)

Paquete

Reglas del negocio

Corrector Ortogrfico
<<service package>> <<service package>>

Corrector Ingls

Corrector Espaol

Ingeniera del Software I (4 I.I.)

Mdulo 2. Tema 8: Diagramas de Clases

93

You might also like