Vous êtes sur la page 1sur 44

3.

- Diseo estructural: Diagrama de clases


M Antonia Zapata Mster Bases de Datos e Internet

Introduccin

Los diagramas de clases sirven para

representar la estructura esttica de un sistema

incluyendo

una coleccin de elementos de modelizacin estticos, tales como clases y relaciones

2006

Conceptos bsicos
Un objeto es algo distinguible que percibimos como que tiene existencia, sea fsica o conceptual Ejemplos: Pedro Gonzlez, el libro Cien aos de soledad, la luna, la asignatura de Acceso a bases de datos

Una clase refiere genricamente a los objetos de una familia que se perciben con propiedades y comportamiento comunes Ejemplos: persona, libro, satlite, asignatura

Una instancia de una clase (objeto) refiere a la representacin de un objeto de una clase.
2006
3

Conceptos bsicos
Los objetos generalmente los percibimos relacionados entre s

Ejemplos: Cien aos de soledad lo escribi Gabriel Garca Mrquez, la luna es un satlite de la tierra

Una asociacin refiere genricamente a las relaciones que existen entre objetos de clases Ejemplos: libro escrito por autor satlite de un planeta

Un enlace refiere a la representacin de una relacin entre instancias de clases


2006
4

Elementos bsicos
Clase: describe genricamente a una familia de objetos que tienen en comn una serie de atributos y operaciones Atributo: describe genricamente una propiedad de los objetos de una clase (generalmente, describe hechos estticos o estructurales) Operacin: describe genricamente un servicio que puede ser requerido a cualquier objeto de una clase para que muestre un comportamiento
2006
5

Elementos bsicos

Asociacin: describe una relacin genrica entre objetos de clases

<min..max>

Multiplicidad: describe el nmero mnimo y mximo de enlaces posibles

0..* 1..* 1..1 n..m

2006

Representacin grfica

clase

asociacin
<Nombre>

nombre de la asociacin
<NombrClase2>

<NombrClase1>

<min..max>

<min..max>

por cada objeto de Clase2 hay como mnimo min y como mximo max objetos de Clase1 relacionados con l

por cada objeto de Clase1 hay como mnimo min y como mximo max objetos de Clase2 relacionados con l

2006

Ejemplo: cajero automtico (versin 1)

Tarjeta
1..* 1 1..* 1

Cliente

Cuenta

una tarjeta es de un cliente un cliente tiene una o varias tarjetas una cuenta tiene asociadas una o varias tarjetas una tarjeta es de una cuenta
2006

Restricciones

Dentro de una misma clase, no se pueden repetir nombres de atributos La multiplicidad mnima no puede ser negativa La multiplicidad mxima tiene que ser mayor o igual que la mnima

2006

Recomendaciones
El nombre de las clases se escribe en negrita Los nombres de las clases y las asociaciones empiezan por mayscula Los nombres de los atributos y las operaciones empiezan por minscula Cuando un nombre est formado por ms de una palabra, entonces la segunda y siguientes palabras empiezan por mayscula Ejemplos: Persona, Autor, EjemplarLibro, EscritoPor, edad, telfonoMvil, expulsarTarjeta, dibujar

2006

10

Ejercicios
Cliente 1 1..* Tarjeta 1..* 1 Cuenta

ContratadaPor

Persona

Empresa

Cliente

CuentaBancaria

Sucursal

Alumno

MatriculadoEn

Asignatura

Departamento

Autor

Libro

EjemplarLibro

2006

11

Jerarqua de clases

Generalizacin: es una asociacin entre una clase y otra ms general de modo que la primera describe una subfamilia de objetos de esta ltima

Se debe verificar la propiedad de sustituibilidad (substitutability), es decir, se puede usar una instancia de la especializacin siempre que se espere una instancia de la generalizacin El elemento ms especfico hereda las caractersticas del elemento ms general

2006

12

Representacin grfica
<NombrClase1>

<NombrClase2>

<NombrClase3>

...

<NombrClaseN>

<NombrClase1>

<NombrClase2> 2006

<NombrClase3>

...

<NombrClaseN>
13

Ejemplo

personas
Persona

mujeres
Mujer

representa una relacin de subconjunto

2006

14

Recomendaciones

El nombre de una clase abstracta se escribe en itlica

Persona

Hombre

Mujer

2006

15

Se pueden realizar distintas clasificaciones

Seguro

SeguroIndividual

SeguroEmpresa

SeguroDeVida

SeguroDeCoche

2006

16

Tipos de clasificaciones

<NombrClase1> {restriccin}

<NombrClase2>

<NombrClase3>

...

<NombrClaseN>

Las restricciones posibles son: complete o incomplete: si todas las instancias de la superclase estn en una subclase o no. disjoint o overlapping: si cada instancia de la superclase est en como mucho una subclase o no
2006
17

Ejemplo

Persona {complete, disjoint}

Hombre

Mujer

2006

18

Clases: atributos
Atributo: describe genricamente una propiedad de los objetos de una clase (generalmente, describe hechos estticos o estructurales) Visibilidad: mbito en el que el atributo es visible (+: pblico, -: privado, #: protegido o ~: paquete) Nombre: identifica el atributo dentro de la clase (no se puede repetir) Tipo: describe el tipo del valor del atributo (entero, real, ...) Multiplicidad: describe el nmero mnimo y mximo de valores posibles de un atributo Valor inicial: describe el valor que se asigna por defecto a un atributo cuando se instancia un objeto Alcance: describe si es un atributo de instancia o de clase
2006
19

Notacin y ejemplos
Notacin:
[ visibilidad ] nombreAtributo [ : tipo ] [ [multiplicidad] ] [ = valorIncicial ]

Los atributos de clase se escriben subrayados Por defecto, la visibilidad es pblica y la multiplicidad es [1..1] Ejemplos:
nombrePersona origen: Punto idUnico: Long 2006 +provincia: String =Zaragoza -segundoApellido: Integer [0..1] #prioridad: Entero =1
20

Ejemplos
Persona nombrePersona primerApellido segundoApellido fechaNacimiento calle: String localidad: String [0..1] provincia: String [0..1] =Zaragoza CP: String Direccin

Libro +ttulo: String [0..1] +autor: String [0..*] +fechaPublicacin: date

Producto #id: Float +nombre: String +precio: Float

2006

21

Clases: operaciones

Operacin: describe genricamente un servicio que puede ser requerido a cualquier objeto de una clase para que muestre un comportamiento Visibilidad: mbito en el que la operacin es visible (+: pblico, -: privado, #: protegido o ~: paquete) Nombre: identifica la operacin dentro de la clase (no se puede repetir) Parmetros: lista de parmetros de la operacin Tipo del valor devuelto: tipo del resultado si es que tiene Alcance: describe si es una operacin de instancia o de clase
2006
22

Notacin y ejemplos
Notacin:
[ visibilidad ] nombreOperacin [ (listaParmetros) ] [ :tipoRetorno ]

Las operaciones de clase se escriben subrayadas Por defecto, la visibilidad es pblica Ejemplos:
mover( ) ponerAlarma(t:temperatura) copiasEnEstantera( ):Entero 2006 +aadirCurso( c:Curso):Booleano -compactar( ) #comprobarErrores( )
23

Ejemplos
Figura origen mover( ) redimensionar( ) visualizar( ) Ventana origen:Punto tamao:Vector abrir( ) cerrar( ) mover( ) Transaccin SensorTemperatura +reiniciar( ) +ponerAlarma(t:temperatura ) +valor( ): temperatura 2006 +ejecutar( ) +rollback( ) #prioridad( ) #marcaDeTiempo( )
24

Instancias

Instancia de clase (objeto): describe un objeto de una clase mediante valores de los atributos de la clase. El objeto responde a las operaciones de la clase Instancia de asociacin (enlace): describe una relacin entre objetos

Notacin nombre:clasificador

2006

25

Ejemplos
Juan
objeto sin clase

: Persona
objeto annimo

Juan : Persona
objeto no annimo
:direccion

MPR01:Persona nombrePersona: "Mara" primerApellido: "Ortz" segundoApellido: "Garca" fechaNacimiento: 1/2/1980

tipoCalle: "Plaza" calle: "San Francisco" casa: "3" escalera: piso: "3" puerta: "A" localidad: "Zaragoza" CP: "50009" provincia: "Zaragoza"

miLibro: libro titulo[0...1]: string = "El Alba" autor[0...N]: string = null fechaPublicacion: date[0...1] = null tipoLibro: string = "ensayo"

Valor nulo describe la ausencia de valor

2006

26

Propiedad de herencia

Persona nombrePersona primerApellido segundoApellido fechaNacimiento

Los atributos y operaciones de la clase ms general (superclase) son atributos de la clase especializada (subclase) Una subclase puede redefinir una operacin heredada

Hombre

Mujer numEmbarazos

2006

27

Ejemplos

MPR01:Mujer PPGO3:Hombre nombrePersona: "Mara" primerApellido: "Ortz" segundoApellido: "Garca" fechaNacimiento: 1/2/1980 numEmbarazos: 0 nombrePersona: "Pedro" primerApellido: "Prez" segundoApellido: "Garca" fechaNacimiento: 7/10/2005

2006

28

Tipos especiales de asociaciones


Agregacin: es una asociacin que describe una relacin entre un todo y sus partes de modo que las partes pueden existir por s mismas Composicin: es una asociacin que describe una relacin entre un todo y sus partes de modo que las existencias de las partes se perciben como totalmente dependientes del todo

2006

29

Ejemplos

EquipoFutbol

0...1

0...*

JugadorFutbol

relacin tipo tiene un En una agregacin una parte puede pertenecer a varios todos

Proyecto

Actividad

relacin tipo contiene a En una composicin una parte slo puede pertenecer a un todo 2006
30

Clase asociativa
Clase asociativa: describe una asociacin que refiere a una familia de relaciones entre objetos sobre las que se perciben propiedades que son propias de las relaciones

2006

31

Ejemplo

prestado LibroFsico 0...* Prstamo fechaPrstamo fechaDevolucin [0...1] 0...1 SocioBiblioteca

Un atributo debe situarse en el elemento al que directamente atribuye

2006

32

Multiplicidad de clase
Las clases tambin pueden tener asociada una multiplicidad que limita el nmero mnimo y mximo de instancias.
n..m <NombrClase>

Por defecto se toma el valor *.


1 ControladorRed

Una clase que tiene slo una instancia se denomina clase unitaria o singleton
2006
33

Roles y navegacin

empleado

patrn 0..*

Persona

1..*

Empresa

Un rol indica el papel que juega una clase en una asociacin. La navegacin define la posibilidad (o no) de acceder a los objetos de una clase desde otra.

2006

34

Asociaciones n-arias
La multiplicidad de una clase en una asociacin n-aria especifica el nmero de instancias que pueden relacionarse con una instancia de cada una de las otras clases

Proveedor

Producto

Tienda

Dado un proveedor y una tienda pueden tener varios productos

2006

35

Notas
Nota: es una observacin, condicin semntica o restriccin
<nota>

prestado LibroFsico 0-* Prstamo fechaPrstamo fechaDevolucin [0-1] 0-1 SocioBiblioteca

RN fechaPrestamo < fechaDevolucion

2006

36

Ejemplo de prstamo con UML 2.0


0..* {bag} 0..*

SocioBiblioteca

LibroFsico

Prstamo fechaPrstamo fechaDevolucin - un prstamo es la asociacin entre un nico socio y un nico libro (por la propia definicin de clase asociativa). - un socio puede haber cogido prestado varios libros. - un libro ha podido ser cogido prestado por socios varias veces. - un socio puede haber cogido prestado un mismo libro varias veces (correspondiendo a prstamos distintos). 2006
37

Ejemplo de prstamo con UML 1.5

Prstamo SocioBiblioteca 1 0..* fechaPrstamo fechaDevolucin 0..* 1 LibroFsico

- un prstamo tiene asociado siempre un nico libro y un nico socio - un socio puede haber solicitado varios prstamos (de un libro cada vez) - un libro ha podido ser prestado varias veces (a un socio cada vez). - un socio puede haber cogido prestado un mismo libro varias veces. las restricciones son las mismas

2006

38

Ejemplo de prstamo con asociacin ternaria

SocioBiblioteca

0..1

0..1

LibroFsico

dado un prstamo y un libro pueden ser de cero o un socio CUIDADO: el mismo prstamo, con otro libro, puede estar asociado con otro socio

0..*

Prstamo

dado un libro y un socio pueden tener cero o varios prstamos

- un prstamo puede estar asociado varias veces con libros y socios - un socio puede haber solicitado varios prstamos (de un libro cada vez) - un libro ha podido ser prestado varias veces (a un socio cada vez). - un socio puede haber cogido prestado un mismo libro varias veces. las restricciones son distintas!!!! 2006
39

Asociaciones ternarias en UML


En una asociacin ternaria es conveniente poder dar dos tipos de informacin: - por cada pareja de instancias de dos clases, con cuntas instancias de la otra clase est relacionada. Por ejemplo, indicar que cada pareja (socio, libro) se relaciona con cero o varios prstamos esta informacin S se indica en UML a travs de la multiplicidad

- en cuntas asociaciones participa una instancia de una clase. Por ejemplo, indicar que dado un prstamo siempre participa en una sola instancia de la asociacin esta informacin NO se indica en UML a travs de la multiplicidad!!!! es necesario imponer una restriccin y especificarla usando OCL 2006
40

Navegacin vs atributo

A X b:B[*]

Un extremo de asociacin navegable es tambin un atributo. Se puede utilizar un atributo para representar el extremo navegable de una asociacin. Esta notacin se puede usar en conjuncin con la representacin grfica de la asociacin con objeto de que quede claro que el atributo representa el extremo de una asociacin

2006

41

Especializacin dinmica (1/2)

Empleado

{incomplete, disjoint}

Gerente

Vendedor

Administrador

Un mismo empleado puede ir desempeando distintos puestos en la empresa. Por lo tanto un mismo objeto puede ir cambiando de clase a lo largo del tiempo. El problema es que la mayora de los lenguajes de programacin no ofrecen la posibilidad de que un objeto cambie de clase. 2006
42

Especializacin dinmica (1/2)


Empleado EstadoDeEmpleado

{incomplete, disjoint}

Gerente

Vendedor

Administrador

El empleado es siempre el mismo y lo que cambia es el estado en el que se encuentra. Cuando un empleado cambia de estado se destruye el objeto que representa ese estado y se crea un nuevo objeto representando el nuevo estado. Con este diseo ya no se utiliza especializacin dinmica. Se puede representar muy fcilmente la posibilidad de que un mismo empleado desempee varios papeles en la misma empresa o el hecho de guardar la historia de los puestos que ha ido ocupando un empleado. 2006
43

PowerType (supra tipo)


rbol {incomplete, disjoint} :TipoDerbol
* 1

TipoDerbol

Abedul

Abeto

Power type: clase cuyas instancias son subclases de otra clase. Por ejemplo, las instancias de la clase TipoDerbol son abedul y abeto, que a su vez son subclases de rbol. Aunque parece redundante porque se representa dos veces lo mismo, no es as puesto que las instancias del power type y las subclases son los mismos objetos. 2006
44

Vous aimerez peut-être aussi