LP II - Diagrama de Clases

68
1 DIAGRAMA DE CLASES

Transcript of LP II - Diagrama de Clases

Page 1: LP II - Diagrama de Clases

1

DIAGRAMA DE CLASES

Page 2: LP II - Diagrama de Clases

2

Que es un Diagrama de Clases?

Un Diagrama de Clases forma parte de la vista estática del sistema.

En el Diagrama de Clases será donde definiremos las características de cada una de las clases, interfaces, colaboraciones y relaciones de dependencia y generalización. Es decir, es donde daremos rienda suelta a nuestros conocimientos de análisis y diseño orientado a objetos, definiendo las clases e implementando las ya típicas relaciones de herencia y agregación.

El modelo de casos de uso aporta información para establecer las clases, objetos, atributos y operaciones

Page 3: LP II - Diagrama de Clases

3

Vocabulario del sistema

CarroCompra

Producto

idnombreprecioubicacion

Responsabilidades

almacenar productosañadir productoseliminar productoscalcular precio compra

Cliente

nombredireccionemail Transaccion

commit()rollback()tuvoExito()

Factura

fechaimporte

nuevaFactura()

Comercio

nombredirecciondireccionWeb

avisarPedido()

Internauta

emailnumeroCuenta

Page 4: LP II - Diagrama de Clases

4

Ejemplo

Avión militar Avión comercial

Avión de carga Avión de pasajeros

Motor Vendedor de boletos

Avión

1..4

1

1..4

1

Piloto

Reserva

n

1

n

1

Línea aérea

Vuelon1 n1

1..2

n

1..2

nn1 n1

1

n

1

n{ disjunta, completa }

{ disjunta, completa }

Page 5: LP II - Diagrama de Clases

5

Page 6: LP II - Diagrama de Clases

6

Clases y Objetos

Diagrama de Clases y Diagramas de Objetos pertenecen a dos vistas complementarias del modelo

Un Diagrama de Clases muestra la abstracción de una parte del dominio

Un Diagrama de Objetos representa una situación concreta del dominio

Las clases abstractas no son instanciadas

Page 7: LP II - Diagrama de Clases

7

Que es una Clase?Una Clase, es un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica.Describe un conjunto de objetos con características y comportamiento idéntico.Una Clase está representada por un rectángulo que dispone de tres apartados, el primero para indicar el nombre, el segundo para los atributos y el tercero para los métodos

NombreClase

atributoUnoatributoDos

operaciónUno()operaciónDos()

Page 8: LP II - Diagrama de Clases

8

A continuación describiremos cada uno de lis tres compartimientos

estándar:

•PRIMER COMPARTIMIENTO Contiene el nombre de la

Clase y opcionalmente su multiplicidad.

NombreClase

Page 9: LP II - Diagrama de Clases

9

ATRIBUTOS

Un atributo es una propiedad o característica de una

clase y describe un rango de valores que la propiedad

podrá contener en los objetos (esto es, instancias)

De la clase. Una clase podrá contener varios o ningun

atributo. Por convencion, si el atributo consta de una

palabra se escribe en minusculas: por otro lado, si el

nombre contiene más de una palabra cada palabra

sera unida a la anterior y comenzará con una letra

mayúscula, a excepción de la primera palabra que

comenzará en minúscula.

Page 10: LP II - Diagrama de Clases

10

Una clase y sus atributos

Lavadora

marcamodelonumeroSeriecapacidad

Page 11: LP II - Diagrama de Clases

11

visibilidad

nombre: nombre del atributo

Tipo : tipo del atributo

valor_inicial: valor inicial o por defecto

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

+ = pública # = protegida - = privada

propiedades: {frozen} {addOnly}

Atributos

Sintaxis:

Page 12: LP II - Diagrama de Clases

12

Diagramas de Clase: Atributos

Nivel Conceptual: “Los clientes tienen un nombre”Nivel de Especificación: “El cliente puede almacenar y consultar su nombre”Nivel de Implementación: “Cliente tiene un campo de tipo string que almacena su nombre y un método que lo devuelve”

Cliente

nombre : String

Page 13: LP II - Diagrama de Clases

13

Una nota puede conectar tanto imagen como texto

Lavadora

marcamodelo

numeroSeriecapacidad

agregarRopa()sacarRopa()agrgarDetergente()activar()

Vease la norma gubernamental

Page 14: LP II - Diagrama de Clases

14

Multiplicidad de los atributos

NombreClase

+ atributoUno+ atributoDos- atributoTres [0..3] {atributoTres es privado y tiene

Una multiplicidad de 0, 1, 2 ó 3}

Page 15: LP II - Diagrama de Clases

15

El Tipo de atributo

NombreClase

+ atributoUno : string+ atributoDos : int- atributoTres [0..3]: date

{atributoUno es string, el atributoDos es int y el atributoTres es date}

Lavadora

marca : String = "KENMORE"modelo : StringnumeroSerie : Stringcapacidad : Integer

Page 16: LP II - Diagrama de Clases

16

OPERACIONES Una operación es algo que la clase

puede realizar, o pueden hacer a una clase. La lista de operaciones se inicia debajo de una línea que separa a las operaciones de los atributos

Page 17: LP II - Diagrama de Clases

17

visibilidad

nombre: nombre de la operación

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

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

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

+ = pública # = protegida - = privada

[visibilidad] nombre [(lista_parametros)] [: tipo_retorno] [{propiedades}]

Operaciones

Page 18: LP II - Diagrama de Clases

18

Diagramas de clase: Operaciones

Cuentacodigosaldotitular$ UltimoCodigo

reintegro()ingreso()ultimasOperaciones()saldo()

Page 19: LP II - Diagrama de Clases

19

Diagramas de Clase: Operaciones

Nivel Conceptual Responsabilidades de la clase Tarjetas CRC: Descripción de alto nivel del

propósito de la clase

Nivel Especificación Protocolo de la clase (operaciones públicas)

Nivel Implementación Conjunto de métodos de la clase

Page 20: LP II - Diagrama de Clases

20

OPERACIONES

La lista de operaciones de una clase aparece debajo de una línea que las separa de los atributos de una clase

Lavadora

marca : String = "KENMORE"modelo : StringnumeroSerie : Stringcapacidad : Integer

agregarRopa()sacarRopa()agregarDetergente()activar()

Page 21: LP II - Diagrama de Clases

21

Lavadora

marca

...

agregarRopa()

...

UNA CLASE Y SUS OPERACIONES

Page 22: LP II - Diagrama de Clases

22

Clase1

operacion1()operacion2()operación3()

Clase2 Clase3

Clase4

Clase5

Operación1(pública) puede ser invocada por todas las Clases, operación2 (privada) solo puede ser invocada por Clase1, mientras que operación3 (protegida) podrá ser invocada por Clase1, Clase2 y Clase3, pero no por Clase4 ni Clase5

Page 23: LP II - Diagrama de Clases

23

Una operación polimórfica, es justamente la misma operación implementada de manera distinta por dos o más clases.

RESPONSABILIDADES DE LAS CLASES

Una responsabilidad es un contrato u obligación que la clase debe cumplir, pues viene a ser el fin para la cual fue creada . Los atributos y comportamiento son las características de la clase que le permiten cumplir con esas responsabilidades.

Las responsabilidades se colocan en un cuarto comportamiento del rectángulo que representa a la clase. Las responsabilidades se indican con frases cortas en texo libre.

NOMBRE CLASE

RESPONSABILIDADES

- ......................................

- ......................................

Page 24: LP II - Diagrama de Clases

24

Ejemplos (Clase y Visibilidad)

Alumno

DNI : char[10]número_exp : intnombre : char[50]

alta()poner_nota(asignatura : char *, año : int, nota : float)matricular(cursos : asignatura, año : int)listar_expediente()

Page 25: LP II - Diagrama de Clases

25

POLIMORFíSMO Y OPERACIONES POLIMORFíSMO Y OPERACIONES POLIMÓRFICASPOLIMÓRFICAS

En muchas ocasiones, debido a su naturaleza, es necesario que las clases respondan de manera distinta ante el mismo mensaje . Por ejemplo, el mensaje abrir puede enviarse a la clase regalo, a la clase cuenta bancaria, a la clase ventana, a la clase puerta, o alguna otra; pero, cada clase ejecutará su propia versión de abrir , en respuesta al mensaje respectivo.

REGALO

abrir ( )

. . .

CUENTA BANCARIA

abrir ( )

. . .

VENTANA SOFTWARE

abrir ( )

. . .

VENTANA COMÚN

abrir ( )

. . .

Page 26: LP II - Diagrama de Clases

26

Principio de Sustitución

El Principio de Sustitución 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 semántica del programa escrito en los términos de la superclase se vea afectado.”

Page 27: LP II - Diagrama de Clases

27

… Principio de Sustitución Dado que los programadores pueden

introducir código en las subclases redefiniendo las operaciones, es posible introducir involuntaria-mente incoherencias que violen el principio de sustitución

El polimorfismo que veremos a continuación no debería implementarse sin este principio

Page 28: LP II - Diagrama de Clases

28

Polimorfismo

El término polimorfismo se refiere a que una característica 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

Page 29: LP II - Diagrama de Clases

29

… Polimorfismo

Ejemplo: todo animal duerme, pero cada clase lo hace de forma distinta

dormir?

?

Animal

dormir()

León Oso Tigre

Page 30: LP II - Diagrama de Clases

30

… Polimorfismo

Dormir(){en un árbol}

Dormir(){sobrela espalda}

Dormir(){sobre el vientre}

Dormir(){

}

Animal

dormir()

León

dormir()

Oso

dormir()

Tigre

dormir()

Page 31: LP II - Diagrama de Clases

31

… Polimorfismo

La búsqueda automática del código que en cada momento se va a ejecutar es fruto del enlace dinámico

El cumplimiento del Principio de Sustitución permite obtener un comportamiento y diseño coherente

Page 32: LP II - Diagrama de Clases

32

CLASE UTILIDAD ( utility class ) : Es una agrupación de variables globales y procedimientos públicos declarados en forma de una clase. Es importante usarla durante la programación.

Se representa con un estereotipo de utilidad.

<<utility>>

Page 33: LP II - Diagrama de Clases

33

CLASE HOJA (leaf Class) : Es una clase como cualquiera otra, pero se encuentra en el último nivel de descendencia en la jerarquía de clases.

CLASE RAÍZ ( Root Class ) : Es una clase como cualquier otra pero que se encuentra en el nivel más superior dentro de la jerarquía de clases. {root} ClaseRaiz

{leaf} ClaseHoja

Page 34: LP II - Diagrama de Clases

34

Clase Abstracta.

Aquellas que no tienen instancias y sirven para definir otras subclases las cuales si podrán ser instanciadas

ClaseAbstracta

atributoUnoatributoDos

operaciónUno()operaciónDos()

Clase1 Clase2

{Se denota con el nombre dela clase y con letra itálica}

Page 35: LP II - Diagrama de Clases

35

Es una clase cuyas instancias son clases.Es una clase cuyas instancias son clases.

Se representan como clases con el estereotipo <<metaclass>>.Se representan como clases con el estereotipo <<metaclass>>.

METACLASE

Metaclase<<metaclass>>

Page 36: LP II - Diagrama de Clases

36

Relaciones

Existen tres relaciones diferentes entre clases, Dependencias, Generalización y Asociación. En las relaciones se habla de una clase destino y de una clase origen. La origen es desde la que se realiza la acción de relacionar. Es decir desde la que parte la flecha, la destino es la que recibe la flecha. Las relaciones se pueden modificar con estereotipos o con restricciones.

Page 37: LP II - Diagrama de Clases

37

RELACIONES ENTRE CLASES

Tipos de Tipos de

relaciones entre relaciones entre clasesclases

•DependenciaDependencia

•GeneralizaciónGeneralización

•AsociaciónAsociación

Según el nro. Según el nro. de clases de clases participantesparticipantes

Según como se Según como se unan las clasesunan las clases

BinariaBinaria

N - ariaN - aria

ANDAND

XORXOR

AgregaciónAgregación

ComposiciónComposición

Page 38: LP II - Diagrama de Clases

38

Relac ion de Dependenc ia

ClaseDependiente

ClaseIndependiente

Se representa con una

Línea discontinua. Va de

la clase dependiente

(origen) hacia la clase

Independiente. En la

relación de dependencia se

ha reconocido hasta 8

estereotipos (Bind, Derive,

Friend, InstanceOf,

Instantiate, Powertype,

Refine, Use)

Page 39: LP II - Diagrama de Clases

39

ClaseDependienteClaseIndependiente

operacion1()operacion2()

<<friend>>

Este diagrama nos muestra dos clases amigas.Las operaciones 1 y 2 pueden ser usadas por ClaseDependiente. ClaseDependiente obtiene una visibilidad de ClaseIndependiente

Este concepto de clases amigas es muy popular en C++.Especifica que la Clase Amiga puede utilizar los métodos de otra clase.

Page 40: LP II - Diagrama de Clases

40

Lista

añadir(t:T,pos:Entero)obtener(i:entero):T

T

ListaEstudiante

ListaJuego<<Juego>>

Estudiante<<bind>>

Una clase parametrizada y su utilización

Lista deparámetros

Utiliza una lista de estudiantesY Lista de Juego para generarUna clase Lista parametrizada donde halla T.

ClaseIndependiente

ClaseDependiente

Parámetros

<<Bind>>

Ejemplo

Relación de Dependencia

Page 41: LP II - Diagrama de Clases

41

Relación de Generalización

Es una relación entre dos clases en donde una de ellas, llamada subclase o

clase hija (subclass o child ), hereda los atributos y el comportamiento

de otra, llamada superclase o clase padre (superclass o parent).

Se representa mediante una línea continua

con punta de flecha hueca dirigida desde la

clase child hacia la clase parent.

Relación de Generalización

Page 42: LP II - Diagrama de Clases

42

Generalización

Permite gestionar la complejidad mediante un ordenamiento taxonómico de clases

Se obtiene usando los mecanismos de abstracción de Generalización y/o Especialización

La Generalización consiste en factorizar las propiedades comunes de un conjunto de clases en una clase más general

Page 43: LP II - Diagrama de Clases

43

Nombres usados: clase padre - clase hija. Otros nombres: superclase - subclase, clase base - clase derivada

Las subclases heredan propiedades de sus clases padre, es decir, atributos y operaciones (y asociaciones) de la clase padre están disponibles en sus clases hijas

... Generalización

Page 44: LP II - Diagrama de Clases

44

La Generalización y Especialización son equivalentes en cuanto al resultado: la jerarquía y herencia establecidas

Generalización y Especialización no son operaciones reflexivas ni simétricas pero sí transitivas

... Generalización

Page 45: LP II - Diagrama de Clases

45

… Ejemplos (Generalización)

Trabajador

Directivo Administrativo Obrero

Page 46: LP II - Diagrama de Clases

46

El diagrama siguiente muestra a Clase2 que es hijo de Clase1 y por

tanto hereda atributo1 y atributo3, así como operación1 y

operación3, pues tienen visibilidad pública y protegida. Lo mismo

ocurre con Clase3. El atributo2 y la operación2 no se heredan pues

están definidos como privados.Clase1

atributo1atributo2atributo3

operación1()operación2()operación3()

Clase2 Clase3

Page 47: LP II - Diagrama de Clases

47

Cuenta

noCuentaidPropietariosaldoNetofechaApertura

depósito()retiro()anulación()calculaSaldo()

CuentaAhorroCuentaCorriente

Page 48: LP II - Diagrama de Clases

48

... Generalización

Vehículo

Vehículo Terrestre Vehículo Aéreo

Coche Camión Avión Helicóptero

Page 49: LP II - Diagrama de Clases

49

Clasificación Múltiple (herencia múltiple)

Se presenta cuando una subclase tiene más de una superclase

La herencia múltiple debe manejarse con precaución. 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 múltiple

Page 50: LP II - Diagrama de Clases

50

… Herencia Múltiple Uso disciplinado de la herencia múltiple: clasificaciones

disjuntas con clases padre en hojas de jerarquías alternativas

Animal

Bípedo Cuadrúpedo

Con Pelos

Con Plumas

Con Escamas

Herbívoro

Carnívoro

cubertura

cobertura

cobertura

comida

nro patas nro patas

comida

Conejo

Page 51: LP II - Diagrama de Clases

51

Relación de Asociación :Es una relación estructural que describe un conjunto de enlaces o conexiones entre dos o más clases, permitiendo asociar objetos de las clases que colaboran entre si para llevar a cabo un comportamiento deseado.

Clase1 Clase2

Clase1 Clase2

Extremos de la asociación

Nombre de la asociación

Clase1 Clase2*1..* *1..*

1 a muchos : 1..*0 a muchos : 0..*un número fijo : M

Multiplicidad

Page 52: LP II - Diagrama de Clases

52

… Ejemplos (Asociación)

ProfesorDepartamento

10..1

director

1

dirige

0..1

Rol 1 Rol 2

Multiplicidad

Page 53: LP II - Diagrama de Clases

53

ClaseAsociación

Clase1 Clase2

Relación de asociación Entre dos clases.

Debemos indicar sus atributos yoperaciones propias.

Para crear una Clase Asociación, se debe tener una relación de Asociación entre dos clases. Luego definimos la clase asociación y la unimos mediante una línea discontinua con la asociación.

Page 54: LP II - Diagrama de Clases

54

… Ejemplos (Clase Asociación)

Empresa Empleado

1..** 1..**

trabajadoresempleador

Cargo

nombresueldo 0..1

1..*

superior

subordinado 1..*

0..1

Una asociación reflexiva, significa que un objeto de una clase se puede conectar con otros objetos de la misma clase

OcupanteDeAutomóvil1

0..4

Conduce

+conductor

1

+pasajero 0..4

Page 55: LP II - Diagrama de Clases

55

Jugador Equipo11..51..5 1

Contrato DirectorGeneral+Negociado por

Otro ejemplo de clase asociativa

Page 56: LP II - Diagrama de Clases

56

Asociación La asociación expresa una conexión

bidireccional entre objetos Una asociación es una abstracción de

la relación existente en los enlaces entre los objetos

Universidad Estudiante

Univ. del Rimac:Universidad Antonio:Estudiante

Una asociación

Un enlace

Page 57: LP II - Diagrama de Clases

57

Ejemplo:

… Asociación

Persona Compañíatrabaja-para

nombres. s.

nombredirección

jefe

Administraempleado

* *emplea-a

0.. 10.. 1

0.. 1

*

marido

casado-con

mujer

Page 58: LP II - Diagrama de Clases

58

Especificación de multiplicidad (mínima...máxima)

1 Uno y sólo uno0..1 Cero o unoM..N Desde M hasta N (enteros naturales)* Cero o muchos0..* Cero o muchos1..* Uno o muchos (al menos uno)

La multiplicidad mínima >= 1 establece una restricción de existencia

… Asociación

Page 59: LP II - Diagrama de Clases

59

Asociación Cualificada

Reduce la multiplicidad del rol opuesto al considerar el valor

del cualificador

Se representa mediante un pequeño rectángulo adjunto a la clase que hará la búsqueda. La idea es reducir, con eficiencia, la multiplicidad de uno a muchos a una multiplicidad de uno a uno.

Recepcionista Reservación*nroConfirmación : Integer

1 *1nroConfirmación : Integer

Localiza

Page 60: LP II - Diagrama de Clases

60

La agregación representa una relación parte_de entre objetos

En UML se proporciona una escasa caracterización de la agregación

Puede ser caracterizada con precisión determinando las relaciones de comportamiento y estructura que existen entre el objeto agregado y cada uno de sus objetos componentes

Agregación

Page 61: LP II - Diagrama de Clases

61

Ejemplos

CursoDeDoctorado Módulo6..n1..*1..* 6..n

Diamante vacío denota Todo-Parte.El diamante se coloca en el extremo del Todo.

No molestarse en dar nombre a la asociación. Se asume que la asociación “es una parte de”

Se dice que un Módulo es parte de CursoDeDoctoradoPodría ser también que un único módulo podría ser parte de varios CursosDeDoctorado diferentes.

Ej. La ingeniería del Software con Objetos y Componentes II, es parte tanto del curso de doctorado de Ingeniería del Software como del de Informática.

Page 62: LP II - Diagrama de Clases

62

Ejemplos

Sopa Ensalada PlatoFuerte Postre

Comida

1

1

1

1

1

1

1

11

1 1

1

1

1

1

1

or

Restricciones en las agregaciones

La comida consta de Sopa o (or) de Ensalada, el plato fuerte y el postre

Una restricción a una agregación para determinar que sólo un componente es parte del todo (comida)

Page 63: LP II - Diagrama de Clases

63

… Ejemplos

CuentaPersona

1

*

orAsociación excluyente

Empresa

*

*

Usuario Estaciónestá-autorizado-en

prioridadprivilegios

camb_privil

Autorización

* *

Clase de asociación

Polígono Puntocontiene 3.. *1

{ordenado}Agregación

Page 64: LP II - Diagrama de Clases

64

Es un tipo especial de asociación, en donde el tiempo de vida del objeto incluido está condicionado por el tiempo de vida del que lo incluye.

El objeto incluido solo existe mientras exista el objeto base.

Tiene como características: Dependencia existencial Pertenencia fuerte Objetos contenidos no son compartidos.

Composición

Page 65: LP II - Diagrama de Clases

65

Ejemplos

Clase1 Clase3Clase2

ClaseBase

Page 66: LP II - Diagrama de Clases

66

Ejemplos

Cabecera

Factura

1

1

Detalle

1..*

1

1..*

1

1

1

La clase Factura está formada por las clases Cabecera y Detalle. Si la Factura deja de existir, la cabecera y detalle no tendrían sentido, por lo tanto es una Asociación de Composición.

Page 67: LP II - Diagrama de Clases

67

Ejemplos

Page 68: LP II - Diagrama de Clases

68

Fin de la Presentación