Diagramas de Clases
Un diagrama de Clases representa las clases que serán utilizadas dentro del sistema y las relaciones que existen entre ellas.
Un diagrama de clases sirve para visualizar las relaciones entre las clases que involucran el sistema.
Un diagrama de clases está compuesto por los siguientes elementos:
Clase: atributos, métodos y visibilidad.
Relaciones: Herencia, Composición, Agregación, Asociación y Uso.
Elementos
Clase:
Es la unidad básica que encapsula toda la información de un Objeto (un objeto es una instancia de una clase)
. A través de ella podemos modelar el entorno en estudio (una Casa, un Auto, una Cuenta Corriente, etc.).
En UML, una clase es representada por un rectángulo que posee tres divisiones:
En donde:
Superior:
Contiene el nombre de la Clase
Intermedio:
Contiene los atributos (o variables de instancia) que caracterizan a la Clase (pueden ser private, protected o public)
.
Inferior:
Contiene los métodos u operaciones, los cuales son la forma como interactúa el objeto con su entorno (dependiendo de la visibilidad: private, protected o public).
Atributos y Métodos
Atributos:
Los atributos o características de una Clase pueden ser de tres tipos, los que definen el grado de comunicación y visibilidad de ellos con el entorno, estos son:
Public (+,):
Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es accesible desde todos lados.
Private (-,):
Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus métodos lo pueden accesar).
Protected (#,):
Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de las subclases que se deriven (ver herencia).
Métodos: (mismos que atributos)
Diagrama de Secuencias
En un diagrama de secuencia ponemos varios de los objetos o clases que forman parte de nuestro programa y ponemos qué llamadas van haciendo unos a otros para realizar una tarea determinada.
Hacemos un diagrama de secuencia por cada caso de uso o para una parte de un caso de uso (lo que llamo subcaso de uso)
El diagrama de secuencia es uno de los diagramas más efectivos para modelar interacción entre objetos en un sistema
Un diagrama de secuencia muestra la interacción de un conjunto de objetos en una aplicación a través del tiempo y se modela para cada método de la clase.
El diagrama de secuencia contiene detalles de implementación del escenario, incluyendo los objetos y clases que se usan para implementar el escenario, y mensajes pasados entre los objetos.
Un diagrama de secuencia muestra los objetos que intervienen en el escenario con líneas discontinuas verticales, y los mensajes pasados entre los objetos como flechas horizontales.
Existen dos tipos de mensajes: síncronos y asíncronos.
Los mensajes síncronos se corresponden con llamadas a métodos del objeto que recibe el mensaje. El objeto que envía el mensaje queda bloqueado hasta que termina la llamada. Este tipo de mensajes se representan con flechas con la cabeza llena.
Los mensajes asíncronos terminan inmediatamente, y crean un nuevo hilo de ejecución dentro de la secuencia. Se representan con flechas con la cabeza abierta.
También se representa la respuesta a un mensaje con una flecha discontinua.
Los mensajes se dibujan cronológicamente desde la parte superior del diagrama a la parte inferior; la distribución horizontal de los objetos es arbitraria.
Diagramas de objetos
Los diagramas de objetos modelan las instancias de elementos contenidos en los diagramas de clases. Un diagrama de objetos muestra un conjunto de objetos y sus relaciones en un momento concreto. En UML, los diagramas de clase se utilizan para visualizar los aspectos estáticos del sistema y los diagramas de interacción se utilizan para ver los aspectos dinámicos de los sistemas, y constan de instancias de los elementos del diagrama de clases y mensajes enviados entre ellos. En un punto intermedio podemos situar los diagramas de objetos, que contiene un conjunto de instancias de los elementos encontrados en el diagrama de clases, representando sólo la parte estática de un interacción, consistiendo en los objetos que colaborar pero sin ninguno de los mensajes intercambiados entre ellos.
Los diagramas de objetos se emplean para modelar la vista de procesos estática de un sistema al igual que se hace con los diagramas de clases, pero desde la perspectiva de instancias reales o prototípicas. Esta vista sustenta principalmente los requisitos funcionales de un sistema. Los diagramas de objetos permiten modelar estructuras de datos estáticas,
En general los diagramas de objetos se utilizan para modelar estructuras de objetos, lo que implica tomar una instantánea de los objetos de un sistema en un cierto momento. Un diagrama de objetos representa una escena estática dentro de la historia representada por un diagrama de interacción. Los diagramas de objetos se utilizan para visualizar, especificar, construir y documentar la existencia de ciertas instancias en el sistema, junto a las relaciones entre ellas.
Diagrama de Estados
Un estado es una condición durante la vida de un objeto, de forma que cuando dicha condición se satisface se lleva a cabo alguna acción o se espera por un evento. El estado de un objeto se puede caracterizar por el valor de uno o varios de los atributos de su clase, además, el estado de un objeto también se puede caracterizar por la existencia de un enlace con otro objeto.
El diagrama de estados y transiciones engloba todos los mensajes que un objeto puede enviar o recibir. En un diagrama de estados, un escenario representa un camino dentro del diagrama. Dado que generalmente el intervalo entre dos envíos de mensajes representa un estado, se pueden utilizar los diagramas de secuencia para buscar los diferentes estados de un objeto.
En todo diagrama de estados existen por lo menos dos estados especiales inicial y final: start y stop. Cada diagrama debe tener uno y sólo un estado start para que el objeto se encuentre en estado consistente. Por lo contrario, un diagrama puede tener varios estados stop.
Una transición en un diagrama de estados puede tener asociada una acción y/o una guarda, además, una transición puede disparar un evento. La acción será el comportamiento que se obtiene cuando ocurre la transición, y el evento será el mensaje que se envía a otro objeto del sistema. Por último, la guarda es una expresión boolena sobre los valores de los atributos que hace que la transición sólo se produzca si la condición evalúa a true. Tanto las acciones como las guardas son comportamientos del objeto y generalmente se traducen en operaciones de alguna clase.
Una transición entre estados representa un cambio de un estado origen a un estado sucesor destino que podría ser el mismo que el estado origen, dicho cambio de estado puede ir acompa nado de alguna acción. Las acciones se asocian a las transiciones y se considera que ocurren de forma rápida y no interrumpible. Por contra, las actividades se asocian a los estados pudiendo consumir más tiempo, dicha actividad puede verse interrumpida por la ocurrencia de algún evento.
Existen dos formas de transicionar en un diagrama de estados: automáticamente y no automáticamente. Se produce una transición automática cuando se acaba la actividad del estado origen (no hay un evento asociado con la transición). Se produce una transición no automática cuando existe un evento que puede pertenecer a otro objeto o incluso estar fuera del sistema.
Los diagramas de estados muestran el comportamiento de los objetos, es decir, el conjunto de estados por los cuales pasa un objeto durante su vida, junto con los cambios que permiten pasar de un estado a otro.
Los elementos básicos de notación que pueden usarse para componer un diagrama de estado son:
Círculo lleno, apuntando a un estado inicial
Círculo hueco que contiene un círculo lleno más pequeño en el interior, indicando el estado final (si existiera)
Rectángulo redondeado, denotando un estado. En la parte superior del rectángulo está el nombre del estado. Puede contener una línea horizontal en la mitad, debajo de la cual se indican las actividades que se hacen en el estado
Flecha, denotando transición. El nombre del evento (si existiera) que causa esta transición etiqueta el cuerpo de la flecha. Se puede añadir una expresión de Guarda, encerrada en corchetes( [] ) denotando que esta expresión debe ser cierta para que la transición tenga lugar. Si se realiza una acción durante la transición, se añade a la etiqueta después de «/». NombreDeEvento[ExpresiónGuarda]/acción
Línea horizontal gruesa con x>1 líneas entrando y 1 línea saliendo o 1 línea entrando y x>1 líneas saliendo. Estas denotan Unión/Separación, respectivamente.