Subido por Florencia Fusari

Diagrama de Clases, Diagrama de Objetos y Secuencia

Anuncio
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.
Animal
Nombre de la Clase
Atributos, indicando nombre,
tipo y modi cador de acceso
fi
fi
Operaciones, indicando
nombre, valor devuelto (en
caso de tenerlo) y modi cador
de acceso
- nombre: string
- peso: double
- edad: int
- moverse()
- comer()
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
Suscriptor
Se suscribe a
*
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
- vida: int
- nivel: int
- nombre: string
- peso: double
- edad: int
- moverse()
- comer()
- atacar()
- moverse()
- comer()
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
- ladrar()
Nutria
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
vida = 100
textura = “/skins/Steve.png”
fuerza = 10
velocidad = 5
:Jugador
vida = 100
textura = “/skins/Steve.png”
fuerza = 10
velocidad = 5
Objeto Anónimo
Steve
vida = 100
textura = “/skins/Steve.png”
fuerza = 10
velocidad = 5
RELACIONES ENTRE OBJETOS
Las relaciones simplemente se representan mediante líneas sólidas y el
nombre de la misma.
Steve :Jugador
vida = 100
textura = “/skins/Steve.png”
fuerza = 10
velocidad = 5
:Animal
Come
vida = 50
textura = “/skins/vaca.png”
alimento = “Trigo”
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
Descargar