Ediciones ENI
UML 2
Iniciación, ejemplos y ejercicios corregidos [2ª edición] Colección Recursos Informáticos
Extracto del Libro
Modelado de la dinámica
A. Introducción El objetivo del presente capítulo es explicar de qué manera UML representa las interacciones entre objetos. En el capítulo 3, vimos que los objetos de un sistema poseen su propio comportamiento e interactúan entre sí para dotar al sistema de una dinámica global. En el capítulo 4, estudiamos la forma en que los casos de uso representan las acciones y reacciones entre un actor externo y el sistema. Desde el punto de vista del modelado, esos dos tipos de interacciones se distinguen por la diferencia interna/externa, pero no por su naturaleza. Para responder a la necesidad de representación de las interacciones entre objetos, UML propone dos tipos de diagramas:
- El diagrama de secuencia se centra en aspectos temporales. - El diagrama de comunicación se centra en la representación espacial. En el presente capítulo estudiaremos ambos tipos de diagramas. Más tarde examinaremos cómo descubrir progresivamente los objetos que componen un sistema. Dicho descubrimiento se basará en las interacciones entre objetos que intervienen en los casos de uso del sistema. Para representar las interacciones nos decantaremos por el diagrama de secuencia, ya que suele ser la opción preferida por las personas que se encargan de modelar los proyectos.
ã Editions ENI - All rights reserved
El diagrama de comunicación se conoce con ese nombre desde UML 2. En UML 1 se denominaba diagrama de colaboración.
B. Diagrama de secuencia 1. Definición El diagrama de secuencia describe la dinámica del sistema. A modele un sistema muy pequeño, resulta difícil representar toda la sistema en un único diagrama. Por tanto, la dinámica completa mediante un conjunto de diagramas de secuencia, cada uno de generalmente a una subfunción del sistema.
Iniciación, ejemplos y ejercicios corregidos
menos que se dinámica de un se representará ellos vinculado
59
Capítulo 5 El diagrama de secuencia describe las interacciones entre un grupo de objetos mostrando de forma secuencial los envíos de mensajes entre objetos. El diagrama puede asimismo mostrar los flujos de datos intercambiados durante el envío de mensajes. Para interactuar entre sí, los objetos se envían mensajes. Durante la recepción de un mensaje, los objetos se vuelven activos y ejecutan el método del mismo nombre. Un envío de mensaje es, por tanto, una llamada a un método.
2. Línea de vida de un objeto Dado que representa la dinámica del sistema, el diagrama de secuencia hace entrar en acción las instancias de clases que intervienen en la realización de la subfunción a la que está vinculado. A cada instancia se asocia una línea de vida que muestra las acciones y reacciones de la misma, así como los periodos durante los cuales ésta está activa, es decir, durante los que ejecuta uno de sus métodos. La representación gráfica de la línea de vida se ilustra en la figura 5.1.
Figura 5.1 - Líneas de vida
60
UML 2
Modelado de la dinámica La notación "funcion: Clase" representa la función de una instancia seguida del nombre de su clase. Para simplificar, en esta obra consideraremos que la función de la instancia corresponde a su nombre, al igual que ocurría en UML 1. Si sólo una instancia de la clase participa en el diagrama de secuencia, la función de la instancia es opcional. El nombre de la clase puede también omitirse en las etapas preliminares del modelado, pero debe especificarse lo antes posible. Los diagramas de secuencia contienen varias líneas de vida, ya que tratan de las interacciones entre varios objetos.
3. Envío de mensajes Los envíos de mensajes se representan mediante flechas horizontales que unen la línea de vida del objeto emisor con la línea de vida del objeto destinatario (ver figura 5.2).
ã Editions ENI - All rights reserved
Figura 5.2 - Envío de un mensaje En la figura 5.2, el objeto de la izquierda envía un mensaje al objeto de la derecha. El mensaje da lugar a la ejecución del método mensaje del objeto de la derecha, lo que provoca su activación. Los mensajes se numeran secuencialmente a partir de uno. Si un mensaje se envía antes de que concluya el tratamiento del precedente, es posible utilizar una numeración compuesta (ver figura 5.3) en la que el envío del mensaje 2 se produzca durante la ejecución del mensaje 1.
Iniciación, ejemplos y ejercicios corregidos
61
Capítulo 5
Figura 5.3 - Numeración de los mensajes La numeración de los mensajes no es obligatoria. No obstante, resulta práctica para mostrar las activaciones anidadas. También es posible transmitir información; ésta se representa mediante parámetros transmitidos con el mensaje (ver figura 5.4).
Figura 5.4 - Transmisión de datos durante el envío de un mensaje
62
UML 2
Modelado de la dinámica Existen diferentes tipos de envíos de mensajes. En la figura 5.5 ofrecemos una explicación gráfica.
Figura 5.5 Diferentes tipos de mensajes El mensaje sincrónico es el utilizado con mayor frecuencia. Su uso significa que el expedidor del mensaje espera que la activación del método mencionado por el destinatario finalice antes de continuar su actividad. En los mensajes asincrónicos, el expedidor no espera el término de la activación invocada por el destinatario. Esto se produce al modelar sistemas en los que los objetos pueden funcionar en paralelo (es el caso de los sistemas multi-thread, donde los tratamientos se efectúan en paralelo). Ejemplo
ã Editions ENI - All rights reserved
Un jinete da una orden a su caballo, luego le da una segunda orden sin esperar a que concluya la ejecución de la primera. La primera orden constituye un ejemplo de envío de mensaje asincrónico. En UML 1 la representación de un mensaje asincrónico se realizaba con media flecha superior. En UML 2 se emplea una flecha completa. El mensaje de retorno a la llamada a un método no es sistemático, ya que no todos los métodos devuelven un resultado.
Iniciación, ejemplos y ejercicios corregidos
63
Capítulo 5 Los objetos pueden enviarse mensajes a sí mismos. La representación de tales mensajes se ilustra en la figura 5.6.
Figura 5.6 - Envío de un mensaje a uno mismo
4. Creación y destrucción de objetos El diagrama de secuencia describe la dinámica de un sistema. Ésta a menudo contiene creaciones y destrucciones de objetos. La creación de objetos se representa mediante un mensaje específico que da lugar al principio de la línea de vida del nuevo objeto. La destrucción de objetos es un mensaje enviado a un objeto existente y que da lugar a la finalización de su línea de vida. Se representa mediante una cruz.
64
UML 2
Ediciones ENI
UML 2
Practique la modelizaci贸n
Colecci贸n Pr谩cticas T茅cnicas
Extracto del Libro
La composición de objetos y patrones ENUNCIADOS DEL CAPÍTULO 4
29
Capítulo 4: La composición de objetos y patrones X Duración: 2 horas 20 X Palabras clave:
diagrama de estructura composite, colaboración, aplicación de colaboración, patrones de diseño, parámetro de template, clave.
X Objetivo: En este capítulo, usted aprenderá a: : dominar la composición avanzada de objetos, en particular para representar en algunos casos la especialización; : poner en marcha el diagrama de estructura composite, en particular en el caso de la colaboración relativa a los patrones de diseño; : realizar una composición de patrones; : utilizar los parámetros de template.
A
Requisitos previos Para comprobar los requisitos previos necesarios antes de empezar con la práctica, conteste las preguntas siguientes: 1. ¿Qué es la clave de una clase? a. Una referencia de las instancias de esta clase hacia las instancias de otra clase. b. Uno o varios atributos cuyo valor o valores son únicos para cada instancia de la clase. c. Un identificador único de la clase. 2. ¿Qué se puede describir en un diagrama de estructura composite? a. Las actividades de las partes de un objeto. b. Las colaboraciones relacionadas a un patrón de diseño. c. Las partes de un objeto y sus conectores. d. Las partes de un caso de utilización. 3. ¿Cuál es el principal interés de un diagrama de estructura composite con respeto a un diagrama de clases? 4. ¿Qué significa la cardinalidad de una parte? 5. ¿Qué es un papel asociado a una parte?
© Editions ENI - Reproducción prohibida
30
UML 2 - Practique la modelización PRÁCTICAS TÉCNICAS
6. ¿Cuál es la diferencia entre un conector y una asociación? a. No hay ninguna diferencia. b. Un conector es el extremo de una asociación. c. Un conector relaciona dos partes mientras una asociación relaciona dos clases. 7. ¿Qué es una colaboración en un diagrama de estructura composite? 8. ¿Describe una aplicación de una colaboración la utilización de un patrón en un caso preciso al especificar el papel de cada clase que interviene en el patrón? a. Sí. b. No. 9. ¿Qué es un parámetro de template de una clase? 10. ¿Qué significa «restringir un parámetro de template»? a. Indica que una clase concreta debe sustituir al parámetro. b. Indica que el parámetro se debe sustituir con una clase especificada en la exigencia o una de sus sobreclases. c. Indica que el parámetro debe ser sustituido por una clase especificada en la restricción o una de sus subclases. Respuestas pág. 139
B
Enunciado 4.1: Medida Duración aproximada: 30 minutos En física, una medida se expresa con la ayuda de un valor numérico, de un delta (más o menos) alrededor de este valor y de una unidad. Por ejemplo, la medida de una longitud vale 10,3 m ± 0,1. Existen medidas basadas en una unidad simple, tales como el metro del ejemplo anterior. También existen medidas cuya unidad está compuesta por varias unidades simples, como la medida de la velocidad (por ejemplo, en metro por segundo: m/s o m.s-1) o la medida de la energía eléctrica facturada (en kilovatio hora: kWh). Una potencia relacionada a cada unidad simple aparece también en la composición (-1 para los segundos, en el caso de la velocidad expresada en m.s-1; 2 para las superficies expresadas en m2). El objetivo consiste en describir una medida física por un diagrama de clases al utilizar la composición. El valor de la medida y su delta se describen dentro de una misma clase como componente de la clase que representa la medida. © Editions ENI - Reproducción prohibida
La composición de objetos y patrones ENUNCIADOS DEL CAPÍTULO 4
31
Se representa cada unidad básica (metro, kilogramo, hora, etc.) por una instancia única de la clase de las unidades. 1. Trace este diagrama de las clases sin representar en él una noción de orden en las unidades de la medida, es decir, por ejemplo, sin introducir en él distinción entre m.s-1 y s-1.m. En cuanto a las potencias asociadas a las unidades, nos limitaremos a la utilización directa de la unidad (o potencia uno) y al inverso (potencia -1). Utilice dos asociaciones de agregación hacia los objetos que representan las unidades. 2. Suprima la limitación sobre las potencias al utilizar una clase-asociación. 3. Trace este diagrama de clases introduciendo en él una noción de orden en las unidades de la medida, es decir, por ejemplo, al distinguir la representación de m.s-1 y s-1.m. Respuestas pág. 140
C
Enunciado 4.2: Árbol B Duración aproximada: 20 minutos Un árbol B sirve para indexar un conjunto de objetos de datos y para poder encontrar rápidamente cada objeto de datos con la ayuda de una clave asociada de manera única a este objeto. Existe una relación de orden entre las claves: cuando se conoce dos claves es posible determinar la más pequeña de los dos. Un árbol B es una extensión de un árbol binario del cual cada nodo contiene claves e hijos. Un árbol B posee un orden. El número máximo de claves y por lo tanto de objetos de datos referenciados por un nodo es igual a 2*n, siendo n el orden del árbol B. Un nodo es una hoja, o sea que no posee ningún hijo o posee un hijo para cada clave, así como un hijo adicional. Un hijo que corresponde a una clave C posee claves superiores a la clave anterior a la clave C (si existe) e inferiores a la clave C. El hijo adicional contiene claves superiores a la clave más grande del nodo. Por lo tanto, el número máximo de hijos es 2*n+1. La figura siguiente ilustra un ejemplo de árbol B de orden 2.
© Editions ENI - Reproducción prohibida
32
UML 2 - Practique la modelización PRÁCTICAS TÉCNICAS
La raíz posee dos claves y tres hijos. Las hojas poseen tres o cuatro claves. Los objetos de datos asociados a las claves no están representados. Trace el diagrama de las clases que describe un árbol B.
Pistas para el enunciado 4.2 Lo más sencillo consiste en asociar cada hijo (menos el hijo adicional) a cada clave. No es necesario describir las exigencias de cardinalidad sobre el número de claves y de hijos de un nodo. No se olvide que las claves están ordenadas dentro de cada nodo. Respuestas pág. 142
D
Enunciado 4.3: Mesa Duración aproximada: 10 minutos Se trata de describir una mesa compuesta de un tablero, de cuatro patas y dos cajones. No se puede asociar los pies y el tablero a diferencia de los cajones. 1. Describa la tabla con la ayuda de un diagrama de clases. 2. Transforme el diagrama anterior en un diagrama de estructura composite. Respuestas pág. 143
E
Enunciado 4.4: Dictáfono Duración aproximada: 15 minutos Un dictáfono de casetes está compuesto de dos cabezales (una de lectura y otra de grabación), de tres teclas (lectura, grabación y parada). Se puede entregar con un casco. 1. Describa el dictáfono con la ayuda de un diagrama de estructura composite sin distinguir los diferentes tipos de cabezales y teclas. Trace los conectores al especificar las cardinalidades en las extremidades. 2. Ahora queremos diferenciar entre los diferentes tipos de teclas y cabezales. Adapte el diagrama debidamente para asignar las funciones a las partes. Respuestas pág. 144
© Editions ENI - Reproducción prohibida
La composición de objetos y patrones ENUNCIADOS DEL CAPÍTULO 4
F
33
Enunciado 4.5: Documento XML Duración aproximada: 15 minutos Se introduce el patrón Composite en el capítulo relativo a los patrones de diseño. Retomamos el ejercicio del documento XML. Se describe el patrón Composite con la ayuda de un diagrama de estructura composite con colaboración de la manera siguiente:
Trace la aplicación de esta colaboración para un documento XML. Respuestas pág. 145
G
Enunciado 4.6: Estatus de una persona Duración aproximada: 20 minutos Nos interesamos en personas que tienen el estatus de estudiante, empleado, parado o jubilado. Estas personas cambian de estatus a lo largo de su vida. Para describir estos diferentes estatus, el uso de la especialización de una clase Persona, tal como lo ilustra la figura siguiente, parece la solución más adecuada. Se introduce la clase Persona como clase abstracta que describe los aspectos comunes de la persona sea cual sea su estatus. Las cuatro subclases introducen los atributos específicos a cada estatus.
© Editions ENI - Reproducción prohibida
34
UML 2 - Practique la modelización PRÁCTICAS TÉCNICAS
Tal diagrama es sencillo: describe completamente los diferentes posibles estatus de una persona. Sin embargo, no es necesariamente sencillo de poner en marcha: - En primer lugar, introduce una jerarquía sobre las personas en relación con su estatus, pero pueden existir otros criterios de jerarquía sobre las personas (por ejemplo, con respeto a su estatus matrimonial, sus competencias profesionales o también una clasificación hombre, mujer, chico, chica, etc.). El hecho de multiplicar las jerarquías de especialización de un objeto puede convertir el diagrama de las clases en algo muy complejo. - En segundo lugar, supone una implementación que incluye un mecanismo de cambio de clase de una instancia: una persona en paro que encuentra un empleo debe convertirse en una instancia de clase Empleado cuando antes era una instancia de clase Parado. Tales mecanismos no son frecuentes. Existe otra solución que consiste en pasar de la especialización a la composición: el estatus de una persona no está ya relacionado con su clase, sino que se convierte en un vínculo de composición hacia una instancia de la clase que describe el estatus actual de la persona. Como se ha visto anteriormente, se introduce una clase específica para cada estatus. Ilustre esta solución basada en la composición con la ayuda de un diagrama de clases. Respuestas pág. 146
© Editions ENI - Reproducción prohibida
La composición de objetos y patrones ENUNCIADOS DEL CAPÍTULO 4
H
35
Enunciado 4.7: Patrón Strategy con configuración Duración aproximada: 30 minutos El patrón Strategy tiene como objetivo adaptar el comportamiento de un objeto según una necesidad sin cambiar las interacciones con los clientes de este objeto. Se encapsula esta adaptación del comportamiento. Se introdujo el patrón Strategy en el capítulo sobre los patrones de diseño. Retomamos el ejercicio que utilizamos para aprender a personalizar la visualización de un sitio web según el país y a continuación lo haremos según el idioma: español, francés e inglés. Ahora queremos mejorar la utilización de la clase Visualización (la que visualiza el contenido del sitio web) de tal manera que esté configurada por una de las subclases de la clase EstrategiaVisualización. Esta configuración permite designar directamente el idioma elegido, durante la creación de una instancia de la clase Visualización. Entonces esta elección es definitiva para esta instancia. Además queremos que sólo exista como máximo una única instancia de cada subclase EstrategiaVisualización. 1. ¿Cuál es el patrón más adecuado para asegurar que sólo existe como máximo una única instancia de cada subclase EstrategiaVisualización? 2. Trace la parte del diagrama de las clases correspondientes a la clase EstrategiaVisualización y a sus subclases dotadas de la capacidad de tener una sola instancia como máximo. 3. Añada al diagrama de clases la clase Visualización configurada con una subclase de EstrategiaVisualización. A continuación, añada la clase VisualizaciónEs, subclase de la clase Visualización, que se muestra en español. 4. Añada la declaración del atributo estrategiaVisualización en la clase Visualización con su tipo. Este atributo describe la asociación que sirve para asociar una instancia de la clase Visualización a una instancia de una subclase de EstrategiaVisualización. 5. Añada el constructor de la clase Visualización al describir su código. Respuestas pág. 147
© Editions ENI - Reproducción prohibida