Você está na página 1de 51

DIAGRAMAS DE CLASES

Introduccin
Son los diagramas ms comunes en el modelado de sistemas

orientados a objetos.
El diagrama de clase representa clases, sus partes y la forma

en la que las clases de los objetos estn relacionados con otro.


Son importantes no slo para visualizacin, especificacin y

documentacin de modelos estructurales, sino tambin para

construir sistemas ejecutables.

Ejemplo de un diagrama de clases

Los diagramas de clases proporcionan una perspectiva esttica del

sistema (representa su diseo estructural)

Pasos para el diagrama de clases


Identificar las clases.

Mostrar los atributos y operaciones (posteriormente).


Dibujar asociaciones.
Etiquetar asociaciones y en caso necesario los roles.
Indicar multiplicidad.
Dibujar fechas de direccin.

Partes de un Diagrama de Clases


Clases:
Atributos
Mtodos

Visibilidad

Relaciones:
Asociacin

Composicin
Agregacin
Dependencia

Generalizacin

Clase
Es la unidad bsica que encapsula toda la informacin de un

Objeto (un objeto es una instancia de una clase). A travs de


ella podemos modelar el entorno en estudio (una Casa, un
Auto, una Cuenta Corriente, etc.).
En ellos se ponen el nombre, los atributos, las operaciones y

adems se pueden usar para anotar otras propiedades del


modelo como son (reglas del negocio, responsabilidades,
excepciones, etc.)

Clase: Notacin Grfica


En UML, una clase es representada por un rectngulo que posee tres

divisiones:

Ejemplo
La clase automvil que posee como caracterstica:

Matrcula
Color.
Velocidad.

Puede realizar las operaciones de:

Arrancar
Acelerar
Frenar

El diseo asociado es:

Nombre
Cada clase debe tener un nombre que la distinga de otras

clases.
Un nombre es una cadena de texto
Un nombre solo se conoce como Nombre simple.

Una Ruta nombre es el nombre de clase precedido del

nombre del paquete en que vive la clase.

Atributo
Un atributo es una propiedad de una clase que describe un rango

de valores que la propiedad puede conservar.


Una clase puede tener cualquier nmero de atributos o carecer

de ellos.
Son descripciones de caractersticas, se usan para modelar

informacin asociada con una entidad, sintaxis:


Nombre_atributo[multiplicidad]:Tipo = Valor_inicial

La multiplicidad es opcional e indica el nmero de atributos por

instancia de la clase.

Ejemplo Especificacin de un atributo

Elemento

Ejemplo

Nombre del atributo

compaa

Tipo de dato

compaa:character

Valor de default (si hay)

compaa:character = espacios

Restricciones

compaa:character = espacios {1 a 30}


compaa:character = espacios{1 a 30

Caracteres

alfabticos, espacios, puntuacin, no


especiales}

Visibilidad

- compaa:character = espacios {1 a 30
alfabticos, .

Mtodo u Operacin

Una operacin es la implementacin de un servicio que puede ser solicitado


desde cualquier objeto de la clase para afectar el comportamiento.

Una clase puede tener cualquier nmero de operaciones o carecer de ellas.

Un nombre de operacin es un verbo o frase verbal que representa algn

comportamiento.

En una operacin se puede establecer su firma, abarcando el nombre, tipo y


valor de omisin de todos los parmetros y tipo de regreso.

Sintaxis:
Nombre_operacin[parmetros:tipo]:Valor_retorno:tipo

Ejemplo Especificacin de una operacin

Elemento

Ejemplo

Nombre

totalOrderCantidad

Definir argumentos/
Parmetros, corresponden a una
instancia de Order

totalOrderCantidad (order: integer)

Definir el tipo de dato de retorno

totalOrderCantidad (order: integer) :


Dollar

Identificar y describir restricciones

totalOrderCantidad (order: integer) :


{El total es la suma de cada item
(p.u. x cantidad)

Visibilidad

+ totalOrderCantidad (order: integer)


: {El total es la suma .

Visibilidad
Public (+) : Cualquier clase externa puede usar la caracterstica.
Private (-) : Cualquier descendiente de la clase usa la caracterstica.
Protected (#) : Slo la clase misma puede usar la caracterstica.

Relaciones entre Clases


Las relaciones existentes entre las distintas clases nos indican

cmo se comunican los objetos de esas clases entre si.


Los mensajes navegan por las relaciones existentes entre

las distintas clases.


Existen distintos tipos de relaciones:

- Asociacin (Conexin entre clases).

- Dependencia (relacin de uso).


- Generalizacin/especializacin (relaciones de herencia).

Elementos Adicionales de una Relacin

Rol

Identifica con nombres a los elementos que aparecen en los extremos de la lnea

que denota la relacin, dicho nombre describe la semntica que tiene la relacin
en el sentido indicado. Por ejemplo, la asociacin entre Persona que Trabaja Para
una Empresa, recibe el nombre de trabajador y empleador como rol en ese
sentido.

Multiplicidad

Indica la cardinalidad de la relacin. En el ejemplo se utilizan 1 , 1 ..*, 5 , *, como


indicadores de multiplicidad.
Relacin

Multiplicidad

Rol

Tipos de Relaciones
1.- Relacin de Asociacin

1.1.- Asociacin de Agregacin


1.2.- Asociacin de Composicin

2.- Relacin de Dependencia


3.- Relacin de Generalizacin

Asociacin

Una asociacin en general es una lnea que une dos o ms smbolos. Pueden tener

varios tipos de adornos, que define su semntica y caractersticas. Los tipos de


asociaciones entre clases presentes en un diagrama esttico son:

Asociacin

binaria,

asociacin

reflexiva,

asociacin

n-aria,

agregacin,

composicin

La asociacin expresa una conexin bidireccional entre objetos. Una asociacin es


una abstraccin de la relacin existente en los enlaces entre los objetos. Puede
determinarse por la especificacin de multiplicidad (mnima...mxima)

Multiplicidad
Determina cuantos objetos de cada tipo intervienen en la

relacin.
El nmero de instancias de una clase que se relacionan con UNA

instancia de la otra clase


Cada Asociacin tiene dos multiplicidades (una para cada

extremo de la relacin).
Cuando la multiplicidad mnima es CERO, la relacin es opcional.

Una multiplicidad mnima mayor o igual que UNO establece una

relacin obligatoria.

Tipos de Multiplicidad

Ejemplos de Multiplicidad

Direccin

La direccin en las flechas de la asociacin determinan en que direccin

puede recorrerse una asociacin en el momento de la ejecucin.

Una asociacin sin flechas significa que se puede ir de un objeto a otro y


viceversa.

En el ejemplo siguiente el tipo de flecha en la asociacin implica que desde


el objeto Reservacin puedes recuperar (dirigirte hacia) el objeto Cliente.
Tambin implica que del objeto Cliente puede recuperar el juego de

reservaciones para ese cliente.

Asociacin Binaria
Una asociacin binaria se representa mediante una lnea slida que

une dos clases, se trata de una relacin entre las dos clases no muy
fuerte, es decir, no se exige dependencia existencial ni
encapsulamiento.

Asociacin Reflexiva
Una clase puede asociarse con s misma. Una clase

Empleado puede relacionarse con s misma a travs del


rol gerente/dirige.
No significa que una instancia est relacionada consigo

misma, sino que una instancia de la clase est


relacionada con otra instancia de la misma clase.

Ejemplo

Nota:
Una instancia de Empleado puede ser el jefe de otras instancias de Empleado. Como el
rol subordinado tiene una multiplicidad de 0*, significa que puede tener o no tener
otros empleados a quien dirigir.
Una instancia de Empleado tiene un slo jefe o ninguno (en caso de ser el mismo jefe).

Asociacin N-aria
Es una forma de expresar una relacin entre tres o ms

clases. La clase de asociacin es dependiente en existencia


de las otras clases.

Asociacin de Composicin

Es un tipo de relacin fuerte, el objeto agregado no puede existir de forma

independiente.

Agregacin disjunta y estricta: Las partes slo existen asociadas al compuesto (slo
se accede a ellas a travs del compuesto).

Grficamente, se muestra con un rombo lleno en uno de los extremos (compuesto).

Ejemplo

Asociacin de Agregacin

Es un tipo de relacin dbil, el objeto agregado puede existir de forma


independiente.

Las partes pueden forma parte de distintos agregados.

Grficamente, se muestra con un rombo vaco en uno de los extremos.

Ejemplo

Dependencia
Relacin (ms dbil que una asociacin) que muestra la

relacin entre un cliente y el proveedor de un servicio usado


por el cliente:
Cliente es el objeto que solicita un servicio.
Servidor es el objeto que provee el servicio solicitado.

Un cambio en un elemento (el elemento independiente)

puede afectar a la semntica del otro elemento (elemento


dependiente).

Grficamente, la dependencia se muestra como una lnea

discontinua con una punta de flecha que apunta del cliente al


proveedor.
Clase dependiente

Clase independiente

Video
...
...
Grabar(c : canal)

Televisin
Canal

...
...
cambiar(c : canal)

Generalizacin
Es una relacin entre dos clases en donde una de ellas,

llamada subclase o clase hija, hereda los atributos y el


comportamiento de otra, llamada superclase o clase padre.
En una generalizacin no hay multiplicidad ni roles.
Las subclases heredan caractersticas de las clases de las que se

derivan y aaden caractersticas especficas que las diferencian.


La visibilidad protected permite que solo objetos de la

misma clase subclase vean el elemento.

Representacin Grfica:
Clase hija

Clase Padre

Vehculo

Terrestre

camin

auto

Areo

avin

helicptero

Paquete

Es un elemento organizador que proporciona UML al dividir el sistema en

paquetes que lo hace ms fcil de entender.

Un paquete es una forma de agrupar clases (u otros elementos en otro tipo


de diagramas) en modelos grandes. Pueden tener asociaciones de
dependencia o de generalizacin entre ellos. Un ejemplo puede ser el
siguiente

Interfaces
Una interface no es una clase.
Una clase tiene una instancia de su tipo, mientras que una interface

debe tener al menos una clase para implantarla. En UML, una


interface es considerada como una especializacin de una clase.
Una interface se dibuja como una clase, pero en el compartimento

superior del rectngulo aparece un texto una inicial que indica que
se trata de una interface y no de una clase.
Se representan como clases pero con el estereotipo <<interface>>.
Solo contienen operaciones pblicas.

Ejemplo

En el diagrama anterior las clases Professor y Student implementan a la


interface Person y no heredan de sta, podemos deducirlo a partir de:
1) El objeto Person de acuerdo a la simbologa del diagrama est como una
interface y Professor y Student estn como clases.
2) No se trata de herencia ya que la lnea con la flecha est punteada y no
slida.

Clase Abstracta
Una clase abstracta se denota con el nombre de la clase y de los

mtodos con letra "itlica". Esto indica que la clase definida no


puede ser instanciada pues posee mtodos abstractos (an no han
sido definidos, es decir, sin implementacin). La nica forma de
utilizarla es definiendo subclases, que implementan los mtodos
abstractos definidos.

Clase Parametrizada

Se denota con un subcuadro en el extremo superior de la clase, en donde se

especifican los parmetros que deben ser pasados a la clase para que esta pueda
ser instanciada. El ejemplo ms tpico es el caso de un Diccionario en donde una
llave o palabra tiene asociado un significado, pero en este caso las llaves y
elementos pueden ser genricos. La genericidad puede venir dada de un Template
(como en el caso de C++) o bien de alguna estructura predefinida (especializacin a
travs de clases).

En el ejemplo no se especificaron los atributos del Diccionario, pues ellos


dependern exclusivamente de la implementacin que se le quiera dar.

Ejemplo 1:

En una empresa de Ventas, un cliente (Natural o Jurdico) realiza un


pedido que es atendido por un Personal.

Dicho personal tiene a su cargo a otro personal. El cual ocupa un puesto

especfico en la empresa.

En un pedido se pueden consignar la venta de varios productos.

As tambin un producto puede estar relacionado con varios pedidos.

Un producto se encuentra relacionado con una sola categora, a la cual


pueden pertenecer varios productos

Realizar un diagrama de Clases que grafique las relaciones existentes.

Ejemplo 1:

Ejemplo 2:

Se desea disear un diagrama de clases sobre la informacin de las


reservas de una empresa dedicada al alquiler de automviles,

teniendo en cuenta que:

Un determinado cliente puede tener en un momento dado hechas


varias reservas.

De cada cliente se desean almacenar su DNI, nombre, direccin y


telfono. Adems dos clientes se diferencian por un cdigo nico.

Cada cliente puede ser avalado por otro cliente de la empresa.

Una reserva la realiza un nico cliente pero puede involucrar varios

coches.

Es importante registrar la fecha de inicio y final de la reserva, el precio del


alquiler de cada uno de los coches, los litros de gasolina en el depsito en

el momento de realizar la reserva, el precio total de la reserva y un


indicador de si el coche o los coches han sido entregados.

Todo coche tiene siempre asignado un determinado garaje que no puede

cambiar. De cada coche se requiere la matricula, el modelo, el color y la


marca.

Cada reserva se realiza en una determinada agencia.

Ejemplo 2:

Ejemplo 3:

La Polica quiere crear una base de datos sobre la seguridad en algunas entidades bancarias.
Para ello tiene en cuenta:

Que cada entidad bancaria se caracteriza por un cdigo y por el domicilio de su Central.

Que cada entidad bancaria tiene ms de una sucursal que tambin se caracteriza por un
cdigo y por el domicilio, as como por el nmero de empleados de dicha sucursal.

Que cada sucursal contrata, segn el da, algunos vigilantes jurados, que se caracterizan por
un cdigo y su edad. Un vigilante puede ser contratado por diferentes sucursales (incluso de
diferentes entidades), en distintas fechas y es un dato de inters dicha fecha, as como si se
ha contratado con arma o no.

Por otra parte, se quiere controlar a las personas que han sido detenidas por atracar las
sucursales de dichas entidades. Estas personas se definen por una clave (cdigo) y su
nombre completo.

Alguna de estas personas estn integradas en algunas bandas organizadas y por ello se
desea saber a qu banda pertenecen, sin ser de inters si la banda ha participado en el
delito o no Dichas bandas se definen por un nmero de banda y por el nmero de
miembros.

As mismo, es interesante saber en qu fecha ha atracado cada persona una sucursal.


Evidentemente, una persona puede atracar varias sucursales en diferentes fechas, as como
que una sucursal puede ser atracada por varias personas.

Igualmente, se quiere saber qu Juez ha estado encargado del caso, sabiendo que un
individuo, por diferentes delitos, puede ser juzgado por diferentes jueces. Es de inters
saber, en cada delito, si la persona detenida ha sido condenada o no y de haberlo sido,

cunto tiempo pasar en la crcel. Un Juez se caracteriza por una clave interna del juzgado,
su nombre y los aos de servicio.

NOTA: En ningn caso interesa saber si un vigilante ha participado en la detencin de un


atracador

Ejemplo 3:

Ejemplo 4:

Una biblioteca tiene copias de libros. Estos ltimos se caracterizan por su nombre, ao y autor.

Un libro est relacionado con una categora (novela, teatro, poesa, ensayo) as como tambin con
una editorial.

Los autores se caracterizan por su nombre y fecha de nacimiento. Se considera que el autor slo
tiene una nacionalidad.

Cada copia tiene un identificador, y puede estar en la biblioteca, prestada, con retraso o en
reparacin.

Los lectores pueden tener un mximo de 3 libros en prstamo.

Cada libro se presta un mximo de 30 das, por cada da de retraso, se impone una multa de dos
das sin posibilidad de coger un nuevo libro.

Realiza un diagrama de clases para realizar el prstamo y devolucin de libros.

Ejemplo 4: