Está en la página 1de 35

DIAGRAMA DE CLASES

¿QUÉ ES UN DIAGRAMA DE CLASES?


Es uno de los diagramas más importantes dentro del proyecto, ya que
nos permite definir la estructura del sistema a construir.

Es un diagrama estático o de estructura.

Nos permite ver cómo se relacionan entre sí las clases del sistema.

¿QUÉ ES UNA CLASE?


Una clase es una abstracción de la realidad.
Dicho de otra manera, una clase es, al mismo tiempo, un molde a partir
del cual creamos objetos. Un objeto es, entonces, una instancia de una
clase.

Nombre de la Clase Animal


- nombre: string
Atributos, indicando nombre, - peso: double
tipo y modi cador de acceso - edad: int

Operaciones, indicando
nombre, valor devuelto (en - moverse()
caso de tenerlo) y modi cador - comer()
de acceso

fi

fi

MODIFICADORES DE ACCESO
Los modificadores de acceso sirven para controlar la visibilidad de los
atributos y operaciones de una clase con respecto a las otras.
Existen tres tipo de modificadores de acceso:
- Private: Los atributos/operaciones de la clase sólo son visibles para la
clase contenedora.
# Protected: Se utiliza en la generalización. Sirve para que los atributos/
operaciones de una clase sean visibles para las clases derivadas o hijas.
+ Public: Los atributos/operaciones son visibles para todas las clases.

RELACIONES ENTRE CLASES


Como se mencionó, las clases están relacionadas entre sí.
Las relaciones pueden llevar un nombre que las describa, y en sus
extremos se puede hacer indicaciones, como el rol que desempeña la
clase, los nombres de las clases relacionadas, su multiplicidad, su
visibilidad, y otras propiedades.
Persona Revista
1 Se suscribe a *
Suscriptor Revistas suscritas

MULTIPLICIDAD
Es la cantidad de instancias de una clase que se relacionarán con las
instancias de otras. Podemos encontrar:
0 … 1 : De cero a una instancia (opcional) (1 persona, 1 suscripción)
n : Número específico. Por ejemplo, 1 (1 factura, 1 cliente)
0 … * : De cero a muchos (opcional) (1 profesor, n alumnos)
1 … * : De uno a muchos (1 casa, 1 baño)
M … n : Rango específico. (Relación de muchos a muchos)
(1 programador, 2 proyectos)

TIPOS DE RELACIONES ENTRE CLASES


Asociación. Es una relación débil, bidireccional, en la cual las clases
saben de la existencia de la otra, pueden interactuar, pero no dependen
una de la otra.
Se representa con una línea sólida, sin flecha.
Personaje Animal

- nombre: string - nombre: string


- vida: int - peso: double
- nivel: int - edad: int

- moverse()
- moverse()
- comer()
- comer()
- atacar()

EJEMPLO

Steve come de cero a n animales o puede alimentar de 0 a n


Ambos existen conociendo la existencia del otro e interactúan

También existen asociaciones unidireccionales, pero no son comunes. Por ejemplo, un detector de velocidad
de autos, que es consciente de la existencia del auto, pero el auto (hasta que llega la multa)

AGREGACIÓN
Es una relación parte-todo. Tiene un grado de acoplamiento más alto
que la asociación, pero menor a la composición. En esta relación, una
clase actúa de contenedora de otra, pero el tiempo de vida de la clase
contenida no está limitada por el tiempo de vida de la clase
contenedora.
Se representa con una línea sólida con un diamante vacío en el extremo
de la clase contenedora.

EJEMPLO
Tabla de Madera Mesa

La espada se crea de forma


independiente de Steve, y se almacena
en su inventario (Steve la contiene). Sin
embargo, si Steve muere la espada
seguirá existiendo por sí misma.
COMPOSICIÓN
Es similar a la agregación, pero más acoplada. La vida del objeto
contenido depende de la vida del objeto contenedor. Si se destruye el
objeto contenedor, el o los objetivos contenidos también lo hacen.
Se representa con una línea sólida, con un diamante negro hacia la
clase contenedora.

Cuentas Almacén Clientes

EJEMPLO

El horno contiene un objeto


fuego, el cual, si destruimos el
horno, se destruye con éste
GENERALIZACIÓN
Es una relación mediante la cual una clase, denominada superclase o
clase padre, hereda todos sus atributos y comportamiento a una o más
clases hijas.

Las clases hijas pueden agregar atributos y comportamientos propios.

Se representa con una línea sólida, con una flecha blanca hacia la
superclase

EJEMPLOS Animal
# nombre: string
# peso: double
# edad: int
# moverse()
# comer()

Perro Nutria

- ladrar()

EJEMPLOS Cubo

# nombre: strin
# puntos: int
# textura: string
# colocarMundo()
# romper(): item

DEPENDENCIA
En una relación de dependencia, una clase depende de otra para poder
cumplir con su comportamiento.
Se representa con una línea puntada con una flecha hacia la clase a la
cual se depende.

Gestor de Pago Pasarela de Pago


EJEMPLO
CONSEJOS!
1. Encontrar el nombre de las clases. Por ejemplo, Persona, Automóvil,
Figura, etcétera.
2. Encontrar las relaciones entre las distintas clases. Por ejemplo, una
persona conduce un automóvil.
3. Construir el diagrama, colocando las clases y sus relaciones, tratando
de que las líneas se crucen lo menos posible.

CADA CLASE ES RESPONSABLE DE SU COMPORTAMIENTO!


DIAGRAMA DE OBJETOS
¿EN QUÉ CONSISTEN?
Muestran una fotografía del sistema en un momento específico del
sistema.
Mientras que el diagrama de clases es una vista ESTÁTICA del
sistema, el diagrama de objetos no.
Comparten similitudes con el diagrama de clases, siendo el diagrama
de objetos más sencillo de graficar.
Nos sirven para entender mejor el diagrama de clases, sobre todo el
proceso de abstracción realizado para llegar a éste.

OBJETOS
Steve :Jugador :Jugador Steve

vida = 100 vida = 100 vida = 100


textura = “/skins/Steve.png” textura = “/skins/Steve.png” textura = “/skins/Steve.png”
fuerza = 10 fuerza = 10 fuerza = 10
velocidad = 5 velocidad = 5 velocidad = 5

Objeto Anónimo

RELACIONES ENTRE OBJETOS


Las relaciones simplemente se representan mediante líneas sólidas y el
nombre de la misma.

Steve :Jugador :Animal

vida = 100 Come vida = 50


textura = “/skins/Steve.png” textura = “/skins/vaca.png”
fuerza = 10 alimento = “Trigo”
velocidad = 5 velocidad = 3

EJEMPLO
EJERCICIO!
Realizar el diagrama de clases y de objetos de un juego, que contenga
lo visto en las diapositivas!
1. Personaje.
2. Herramientas/Armas (o ambos).
3. Animales.
4. Cubos.

DIAGRAMA DE SECUENCIA
DEFINICIÓN
- Sirven para describir cómo y en qué orden un grupo de objetos
funcionan en conjunto en un escenario en particular.
- Estos diagramas pueden encontrar su utilidad en los siguientes
aspectos:
- Detallar un caso de uso.
- Modelar la lógica de una operación compleja.
- Ver la interacción entre los objetos y sus componentes para lograr
un objetivo.
- Entender la funcionalidad de un escenario en particular.

ELEMENTOS
Objeto: se representa por un rectángulo. Se aplican las mismas reglas de Diagrama de
Objetos para nombrarlos. Si quien invoca la operación es un actor externo, se representa con
un monigote.

:NOMBRE_CLASE

Línea de vida. Representa el tiempo de vida de un objeto. Se trafica con una línea discontinua.

:NOMBRE_CLASE

ELEMENTOS
Casilla de activación. Es el tiempo que le toma al objeto ejecutar una tarea en
específico. Se representa con un rectángulo blanco encima de la línea de vida.

:NOMBRE_CLASE

ELEMENTOS
Mensajes. Se grafican para representar los mensajes enviados entre los
distintos objetos. Pueden ejecutar una operación.
Existen distintos tipos de mensajes:
Síncronos: El objeto que envía el mensaje debe esperar a que termine la
operación invocada para poder continuar con su responsabilidad.

Asíncrono: El objeto que envía el mensaje puede seguir su trabajo


mientras espera la respuesta del mensaje enviado.

ELEMENTOS
Bucle: Se utiliza para encerrar parte del diagrama e indicar que el mismo se puede
repetir a partir de una determinada condición.

:NOMBRE_CLASE :NOMBRE_CLASE

realizarOperación( )
Loop
<condición>

acumularValor( )

recibirResultado( )

ELEMENTOS
Alternativa: Se utiliza para encerrar parte del diagrama e indicar que el mismo
debe cumplir una condición para ejecutarse.

:NOMBRE_CLASE :NOMBRE_CLASE

realizarOperación( )
Alt
<Si>
acumularValor( )
<Sino>
multiplicarValor( )

recibirResultado( )

ELEMENTOS
Destrucción de un objeto: Para simbolizar la destrucción de un objeto se debe
colocar una cruz al final de la línea de vida del objeto.

:NOMBRE_CLASE

¿ES NECESARIO CONTAR CON UN DIAGRAMA DE CLASES?


El diagrama de secuencia se puede utilizar para poder completar, por
ejemplo, requerimientos de un sistema que tal vez todavía no se tienen
muy en claro.
En general, no sería necesario utilizar un diagrama de clases como base
para realizar un diagrama de secuencia, pero es en donde se encuentra su
mayor provecho. Nos permitirá ver la interacción entre objetos de una
manera más detallada, en donde el orden de éstas juega un papel
fundamental.
También se debe recordar de que sirven para detallar un caso de uso.

PROCESO PARA ARMAR EL DIAGRAMA DE SECUENCIA


- En primer lugar, es importante determinar el escenario que se va a
representar, debido a que éste diagrama representa un escenario en
específico.
- Una vez identificado el escenario, se deberá identificar los objetos
participantes en el escenario, y determinar si hay algún actor externo al
sistema que participe en el escenario.
- Recordar que todos los eventos o mensajes enviados deben tener una
respuesta.

EJEMPLO

Herramienta utilizada: draw.io

También podría gustarte