Notación UML para modelado Orientado a Objetos



Documentos relacionados
Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

DIAGRAMA DE CLASES EN UML

Tema 5. Diseño detallado.

Introducción al UML. Domingo Hernández H. Escuela de Ingeniería de Sistemas Departamento de computación

Diagramas de Clase en UML 1.1

2.2.- Paradigmas de la POO

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción

UML. Lenguaje de Modelado Unificado

Índice.

Programación Orientada a Objetos Analista Programador Universitario Plan 2008 Año 2010

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

M III ABSTRACCIÓN Y CLASIFICACIÓN

DCU Diagramas de casos de uso

Diagramas de clases de UML

Programación Orientada a Objetos en Java

QUÉ ES Y PARA QUÉ SIRVE UML? VERSIONES DEL LENGUAJE UNIFICADO DE MODELADO. TIPOS DE DIAGRAMAS. INGENIERÍA DEL SOFTWARE (DV00205D)

Capítulo 6. Introducción a la POO

Introducción a la programación orientada a objetos

Capitulo III. Diseño del Sistema.

REGLAMENTO DEL AJEDREZ. Tablero cuadrado 8x8 de 64 casillas con colores alternados (típicamente blanco y negro).

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Diseño Conceptual. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Curso de Java POO: Programación orientada a objetos

Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

2. Conceptos básicos Abstracción La abstracción como un proceso mental natural La abstracción en el desarrollo de software

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Relaciones entre conjuntos

Repetir el proceso para cada abstracción identificada hasta que el diseño este expresado en términos sencillos

MANUAL DEL PROGRAMA DE ASESORAMIENTO (Asesores) Navegador y limpiar caché/cookies...2 Acceso al programa de Asesoramiento... 7

PROGRAMACIÓN ORIENTADA A OBJETOS

UML, ejemplo sencillo sobre Modelado de un Proyecto

TEMA 7: DIAGRAMAS EN UML

La ventana de Microsoft Excel

3º Grado Educación Infantil Bilingüe Números. Método Singapur y F. Bravo E R

5.1. Organizar los roles

Relaciones entre clases: Diagramas de clases UML

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado

PROPUESTA DE UN SISTEMA DE EVALUACIÓN EN LA WEB PARA LA EDUCACIÓN. Maria Soledad Zangla, Marcela C. Chiarani y Ma.

JavaScript como Orientación a Objetos

TEMA 14. Modelos de representación de diagramas

6.8 La Arquitectura del Sistema. [Proceso]

EL MODELO ENTIDAD-RELACIÓN:

La composición de una imagen, reglas

Ingeniería del Software I

Unidad II: Diseño de Bases de Datos y el modelo E-R. 2.1 El Proceso de Diseño

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

Índice 1 Instalación de la herramienta 2 Descripción de la herramienta 2 Arranque de la aplicación 3 Proyecto 4 Diagrama de clases 5

Ingeniería de Software I

2.4 Modelado conceptual

Vamos a crear nuestro primer juego en el que tendremos que coger la comida que esta protegida por los gatos

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

Diseño orientado a los objetos

Definir columnas de estilo periodístico

Programación Orientada a Objetos con Java

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

1. Conociendo el equipo

Patrones de Diseño Orientados a Objetos 2 Parte

El proceso de edición digital en Artelope y CTCE

Principios Básicos de Orientación a Objetos. Orientación a Objetos

Capítulo 9. El uso de las TIC por parte de los alumnos, más allá de las aulas

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

9. Objetos y clases Clases

Un juego curioso con conexiones interesantes

Yalù Galicia Hernàndez. Yalú Galicia Hdez. (FCC/BUAP)

Índice general de materias LECCIÓN 7 74

Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios. Dra. Noemí L. Ruiz Limardo 2009

Centro de Capacitación en Informática

El reto de la escuela del siglo XXI

Traslaciones, Homotecias, Giros y Simetrías

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

Introducción a la Programación Orientada a Objetos

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Liderazgo se genera en el lenguaje

Para aquellos que tengan conocimientos de Access es lo más parecido a una consulta de referencias cruzadas, pero con más interactividad.

Caso práctico de Cuadro de Mando con Tablas Dinámicas

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

Introducción a la Informática Aplicada a la Filología TABLAS

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Java Inicial (20 horas)

El proceso unificado en pocas palabras

TEMA 8: DIAGRAMA DE CLASE EN UML

Diagrama de Clases. Diagrama de Clases

Aproximación local. Plano tangente. Derivadas parciales.

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Programa Tracker : Cómo generar Vectores y sumarlos

Cuaderno de juego para la Igualdad

1. Qué tipos de relación hay entre las siguientes clases?

Este documento ha sido generado para facilitar la impresión de los contenidos. Los enlaces a otras páginas no serán funcionales.

Capítulo VI. Diagramas de Entidad Relación

Figura 4.1 Clasificación de los lenguajes de bases de datos

Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 =

SITRÁN ARAGÓN TRÁMITES Y SERVICIOS EN LÍNEA (WEB GANADEROS) SOLICITUD CERTIFICADOS SANITARIOS

_ Antología de Física I. Unidad II Vectores. Elaboró: Ing. Víctor H. Alcalá-Octaviano

Yo soy Darwin Betancourt, de Ecuador, y ayude con esta traducción. Nosotros vamos a dar una visión general del PolarISS WebOS.

Transcripción:

1 Notación UML para modelado Orientado a Objetos

2 Notación UML para modelado Orientado a Objetos Índice 1.1. Qué es UML?.. 3 1.2. Por qué interesa UML en la asignatura de Programación Orientada a Objetos?3 1.3. Qué se va a modelar?.. 3 1.4. Diagramas 4 1.4.1. Diagramas de Clases 4 1.4.2. Diagramas de Objetos. 5 1.4.3. Diagramas de Interacción. 6 1.4.3.1. Diagramas de secuencia 6 1.4.3.2. Diagramas de colaboración 8 1.5. Clases. 8 1.5.1. Clases Abstractas.. 9 1.5.2. Interfaces.. 9 1.6. Objetos 10 1.7. Relaciones. 10 1.7.1. Detalles 10 1.7.1.1. Navegabilidad. 11 1.7.1.2. Multiplicidad.. 11 1.7.1.3. Rol 12 1.7.2. Composición. 13 1.7.3. Uso. 13 1.7.4. Asociación. 13 1.7.5. Herencia.. 14 1.8. Recapitulación 15 1.9. Consideraciones. 16 1.10. Bibliografía. 17

3 1.1. Qué es UML? El Lenguaje Unificado de Modelado (UML, Unified Modeling Language) es un lenguaje estándar, basado en una notación gráfica, que se utiliza para modelar software. Es un lenguaje de propósito general que pretende ser un estándar mundial y se utiliza para visualizar, especificar, construir y documentar las diferentes piezas de un sistema. Qué es un modelo? Una simplificación de la realidad. Por qué se modela? Se construyen modelos para poder entender mejor el sistema a desarrollar, o bien, un sistema desarrollado. 1.2. Por qué interesa UML en la asignatura de Programación Orientada a Objetos? En la asignatura de Programación Orientada a Objetos se aprende un nuevo paradigma de programación: el paradigma orientado a objetos. A su vez, se utiliza el lenguaje Java para implementar el código de los programas orientados a objetos. Para modelar los programas de forma gráfica, viendo las relaciones entre las clases y cómo colaboran unos objetos con otros, se prefiere utilizar una notación estándar. De esta manera, el alumno va conociendo parte de la notación, UML en este caso, lo cual le será útil por varias razones: Le permite ir familiarizándose con un lenguaje de modelado estándar que verá en otras asignaturas de la titulación. Le permite entender modelos con esta notación. Por todo ello, se verá cómo implementar en código Java un modelo diseñado con UML. De esta manera, se podrán hacer diagramas modelando los programas orientados a objetos que se implementen con el lenguaje Java. 1.3. Qué se va a modelar? Se presentará una selección de las características más representativas de UML. De éstas no se detallará todo de forma completa, sino sólo aquello que nos interese para representar nuestros diseños orientados a objetos implementados con el lenguaje Java.

4 Notación UML para modelado Orientado a Objetos Además, conviene dejar claro que: UML es un lenguaje de modelado Java es un lenguaje de implementación Por lo tanto, no existe una representación única para código Java, ni tampoco unas reglas exactas de dado cierto código, entonces cierta representación, que se puedan seguir siempre. De hecho, dos modelados diferentes pueden tener el mismo código asociado, por lo que no hay viaje de vuelta. Es decir, dado un código no es posible determinar las relaciones entre las diferentes clases y, por lo tanto, cual es la representación UML. Se trata de un modelado a nivel conceptual. El estándar UML no pide que se indique todo en los diagramas, sino que lo que se refleje en ellos sea cierto. En nuestro caso, dado un programa orientado a objetos nos interesa tanto su visión estática como su visión dinámica. La visión estática se puede ver como un conjunto de clases que permiten alcanzar altas cotas de abstracción, encapsulación, modularidad y jerarquía. Por otra parte, la visión dinámica de un programa se puede ver como un conjunto de objetos, los cuales colaboran entre sí mediante el desencadenamiento de instanciaciones y de paso de mensajes. Por ello, se van a modelar tanto los aspectos estáticos como los aspectos dinámicos de un programa orientado a objetos. Los aspectos estáticos se modelan mediante diagramas de clases y diagramas de objetos. Los primeros se componen de un conjunto de clases y las relaciones entre ellas, mientras que en los segundos las relaciones se dan entre un conjunto de objetos. Los aspectos dinámicos se modelan mediante diagramas de interacción. Éstos, presentan la forma en la que interactúan los diferentes objetos del diagrama. 1.4. Diagramas 1.4.1. Diagramas de Clases Los diagramas de clases proporcionan una perspectiva estática del código. Se componen de: Clases o Gráficamente se representan mediante un rectángulo con el nombre de la clase. Relaciones o De forma gráfica se trata de una línea que une las clases que relaciona. Un ejemplo de diagrama de clases se presenta en la figura 1.

5 Ter Turno Tablero Ficha Coordenada Figura 1. Diagrama de clases 1.4.2. Diagramas de Objetos Los diagramas de objetos proporcionan una perspectiva estática de una ejecución del código. Presentan instantáneas de instancias de los elementos que aparecen en los diagramas de clases. En definitiva, muestran un conjunto de objetos y sus relaciones en un momento concreto ( fotografía de un momento determinado). Básicamente se componen de: Objetos o De forma gráfica se representa mediante un rectángulo con el nombre del objeto. Relaciones Un ejemplo de diagrama de objetos se presenta en la figura 2.

6 Notación UML para modelado Orientado a Objetos :Ter :Turno :Tablero :Coordenada : : :Ficha :Coordenada :Ficha :Ficha Figura 2. Diagrama de objetos La diferencia clara entre un diagrama de clases y un diagrama de objetos es que el primero representa los aspectos estáticos del sistema, y el segundo los aspectos estáticos de una interacción concreta entre los objetos. 1.4.3. Diagramas de Interacción En los diagramas de interacción se puede ver el patrón de comportamiento de un conjunto de mensajes intercambiados entre un conjunto de objetos, dentro de un contexto para lograr un propósito. Son dos los tipos de diagramas de interacción: secuencia y colaboración. Ambos están basados en la misma información, aunque cada uno enfatiza un aspecto diferente: el diagrama de secuencia destaca la ordenación temporal de los mensajes y el diagrama de colaboración destaca la organización estructural (qué objetos colaboran con otros) de los objetos que intercambian mensajes. 1.4.3.1. Diagramas de secuencia Estos diagramas presentan, ordenados temporalmente, los objetos que participan en una interacción y los mensajes que se intercambian. En el diagrama, en cada eje vertical se coloca un objeto. Los mensajes se representan mediante flechas horizontales de un objeto a otro, donde el retorno se representa mediante una línea punteada del objeto pasivo al objeto agente del mensaje. El tiempo fluye de arriba hacia abajo. Un ejemplo de diagrama de secuencia de presenta en la figura 3.

7 ter:ter turno:turno t:tablero j: jugar() mostrar() poner(t) cambiar() mostrar() Figura 3. Diagrama de secuencia Para especificar quién y cuándo se crean los objetos, se utiliza el estereotipo 1 <<create>>. Como ejemplo se presenta el diagrama de la figura 4. j: t:tablero poner(t) <<create>> c:coordenada recoger() poner(c,f) Figura 4. Diagrama de secuencia con estereotipos 1 Estereotipo: mecanismo de extensibilidad de UML para representar una distinción de uso. Es aplicable a cualquier elemento de modelado.

8 Notación UML para modelado Orientado a Objetos 1.4.3.2. Diagramas de colaboración Un diagrama de colaboración también muestra la interacción entre los objetos, pero basándose en las relaciones entre ellos. En la figura 5 se puede ver un ejemplo de diagrama de colaboración. 1: jugar() ter:ter 5: mostrar() 2: mostrar() t:tablero 4: cambiar() j: 3: poner(t) turno:turno Figura 5. Diagrama de colaboración El diagrama de secuencia y el diagrama de colaboración son equivalentes, ambos muestran una interacción entre los objetos. Simplemente uno de ellos destaca la ordenación temporal y el otro la estructura de la interacción. 1.5. Clases Las clases de Java se representarán tal como aparece en la figura 6. Se trata de un rectángulo dividido en tres partes: la parte superior indica el nombre de la clase; la parte central contiene los atributos y, por último, la parte inferior presentará las operaciones de la clase. NombreClase Atributos Operaciones Figura 6. Representación de una clase con UML Los niveles de visibilidad de los elementos se representan como sigue: Privado: - Protegido: # Público: + En la figura 7 se presenta un ejemplo de clase Java junto con su representación UML.

9 Ficha class Ficha { -color:char +mostrar() +igual(ficha):boolean private char color; public void mostrar() { public boolean igual(ficha ficha) { Figura 7. Ejemplo de representación de una clase con UML 1.5.1. Clases Abstractas La representación para las clases abstractas es igual que para las clases normales, salvo que el nombre de la clase se escribe en cursiva, como se puede apreciar en la figura 8. ClaseA abstract class ClaseA { Figura 8. Representación de una clase abstracta con UML 1.5.2. Interfaces Una interfaz se representa exactamente igual que una clase normal, salvo que se añade un estereotipo ( <<interface>> en este caso) en la parte superior del rectángulo, indicando, precisamente, que se trata de una interfaz y no de una clase normal. En la figura 9 se presenta un ejemplo. <<interface>> InterfazA interface InterfazA { Figura 9. Representación de un interfaz con UML

10 Notación UML para modelado Orientado a Objetos 1.6. Objetos Para representar una instancia concreta de una clase con la notación UML también se utiliza un rectángulo con tres partes. En la primera se especifica el nombre del objeto separado por dos puntos del nombre de la clase, todo ello subrayado. En la segunda parte aparecerán los atributos del objeto con sus valores. Aquellos atributos compartidos por todas las instancias de una clase no se añaden aquí. Por último, en la parte inferior del rectángulo van las operaciones que puede realizar el objeto por pertenecer a una clase determinada, aunque éstas se pueden omitir. También es posible, entre otras cosas, omitir la parte central del rectángulo e, incluso, poner sólo la clase del objeto sin hacer referencia a su nombre. Ejemplos de esta notación se pueden ver en la figura 10. f:ficha f:ficha color=` :Ficha Figura 10. Notación UML para representar objetos En nuestro caso utilizaremos la notación en la que aparece simplemente el nombre de la clase a la que pertenece el objeto (ver figura 11). La razón es porque realmente qué nombre tienen los objetos?, es decir, qué ocurre si se tienen muchas referencias al mismo objeto? ( cuál de todos los nombres de esas referencias se refleja en el diagrama?). :Ficha Figura 11. Notación UML para objetos con nombre de clase únicamente 1.7. Relaciones Cuando se realizan abstracciones son pocas las clases que actúan solas; lo normal es que existan diferentes relaciones entre las clases. Entre clases pueden existir cuatro tipos de relación: composición, asociación, uso y herencia. Las tres primeras se dan cuando objetos de las clases colaboran entre sí. Sin embargo, el hecho de que exista una relación de herencia entre dos clases no implica que los objetos de dichas clases colaboren, puede que nunca lo hagan. 1.7.1. Detalles Se tendrán en cuenta una serie de detalles para todas las relaciones. Estos detalles deberán acompañar a la relación en los diagramas.

11 1.7.1.1. Navegabilidad Se contemplará la navegabilidad en las relaciones, es decir, el sentido de las mismas. Se representará mediante una flecha, la cual indica que es posible navegar desde el objeto de la clase origen al objeto de la clase destino. Por tanto, el objeto de la clase origen conoce a los objetos de la clase destino, de manera que podrá invocar operaciones de éstos. En la figura 12 se presenta un ejemplo de navegabilidad. Ficha class { private Ficha ficha; Figura 12. Navegabilidad entre clases Si se observa la figura anterior, atendiendo solo a la navegabilidad, se puede ver que un objeto de la clase conoce a un objeto de la clase Ficha, por consiguiente, le puede lanzar mensajes, y no al revés. 1.7.1.2. Multiplicidad La multiplicidad consiste en especificar el rango de cardinalidades que puede asumir un conjunto, de forma que se indica cuántos objetos de una clase se relacionan con objetos de la otra clase que forma parte de la relación. Las restricciones de multiplicidad se deberán indicar en el diagrama. En UML es posible especificar la multiplicidad de una clase mediante una expresión en la esquina superior derecha de la misma e, incluso, también se puede especificar la multiplicidad para los atributos. En nuestro caso, simplemente reflejaremos la multiplicidad en los diagramas de clases a nivel de las relaciones entre clases. Por lo tanto, se especificará el número de instancias de una clase que se relaciona con instancias de otra clase, y se indicará al lado de la clase cuyo número de instancias se intenta precisar. En la figura 13 se puede ver un ejemplo. Ficha class { private Ficha ficha; Figura 13. Multiplicidad de la relación entre clases Las multiplicidades con valor 1 no se suelen representar, lo cual queda patente mediante el diagrama presentado en la figura anterior. En este caso, un objeto de la clase Ficha forma parte de un único objeto de la clase y, a su vez, un objeto de la clase tiene un único objeto de la clase Ficha. Para representar una multiplicidad de varios elementos, donde no se sabe el número exacto que tienen, se suele indicar mediante el rango posible. Por ejemplo: 0..

12 Notación UML para modelado Orientado a Objetos *, 1..*, etc. En nuestro caso, simplemente indicaremos la parte máxima del rango y, además, utilizaremos una restricción 2 para indicar el tipo de secuencia de elementos que es. Por ejemplo: {array (si es una tabla normal), {ArrayList (si se trata de un objeto de la clase ArrayList de Java), {List (si se trata de un objeto de la clase List de Java), etc. Un ejemplo se presenta en la figura 14. Ter {array 2 class Ter { private final [ ] JUGADORES = new [2]; Figura 14. Uso de restricciones en la multiplicidad de la relación entre clases En el ejemplo presentado en la figura 14 se conoce el número exacto de la multiplicidad. En caso de ser mayor que 1 y no conocerse con exactitud se indicará con *. 1.7.1.3. Rol Por último, con respecto al nombre de la relación, éste no será especificado. Lo que si se reflejará en los diagramas será el rol que juega en la relación la clase destino de la navegación. El rol es el comportamiento de una entidad que participa en un contexto particular. Es decir, se indica el rol que juega una clase dentro de la relación con otra clase. De forma general se presenta un ejemplo en la figura 15. El nombre del rol que desempeña la clase se especifica al lado de ésta. Empresa Empleado trabajador Figura 15. Roles de las clases Además, en nuestro caso, el rol de la clase será el nombre del atributo. Un ejemplo se presenta en el diagrama de la figura 16. ficha Ficha class { private Ficha ficha; Figura 16. Rol de la clase Ficha en la relación con 2 Restricción: restricción de la semántica de un elemento de UML, que permite añadir nuevas reglas o modificar las existentes.

13 1.7.2. Composición La relación de composición es la relación entre el todo y la parte, siendo responsabilidad del todo lo que le ocurra a cada una de las partes. En UML, para referirse a este tipo de relación, se hace distinción entre Composición y Agregación. Nosotros simplemente vamos a referirnos a composición, representando la relación como una línea acabada en un rombo en el extremo de la clase que representa el todo (ver figura 17). tablero Tablero Ter class Ter { 2 JUGADORES private Tablero tablero; private final [ ] JUGADORES; Figura 17. Relación de composición entre clases 1.7.3. Uso La relación de uso (en UML se denomina de dependencia) es una relación momentánea que se establece entre un cliente y un servidor. La responsabilidad de manejar un objeto servidor no tiene porqué depender únicamente de la clase cliente. En UML se representa mediante una línea punteada que une ambas clases. En la figura 18 se presenta un ejemplo de relación de uso. Coordenada class { public void mover(tablero tablero) { Coordenada c = new Coordenada(); c.recoger(); Figura 18. Relación de uso entre clases En el caso de la relación de uso no hay posible rol a establecer (siguiendo la pauta de que el rol sea el nombre del atributo). 1.7.4. Asociación La relación de asociación es una relación que perdura entre un cliente y un servidor, donde la responsabilidad de manejar el objeto de la clase servidor no tiene porqué depender, únicamente, de la clase cliente. Esta relación se representa en UML mediante una línea que une ambas clases, como se puede apreciar en la figura 19.

14 Notación UML para modelado Orientado a Objetos ficha Ficha class { private Ficha ficha; Figura 19. Relación de asociación entre clases 1.7.5. Herencia La relación de herencia (en UML denominada Generalización) es aquella que se establece entre dos clases, transmitiendo tanto atributos como métodos de la clase padre a la clase hija. La clase hija será una especialización de la clase padre. En este caso la representación UML se realiza mediante un triángulo en el extremo de la relación donde se encuentra la clase más general, la clase padre (ver figura 20). ClasePadre ClaseHija class ClaseHija extends ClasePadre { Figura 20. Relación de herencia entre clases La representación es la misma si la relación de herencia se da entre interfaces (ver figura 21), o si una clase hereda por implementación de una interfaz (ver figura 22). <<interface>> InterfazPadre <<interface>> InterfazHijo interface InterfazHijo extends InterfazPadre { Figura 21. Relación de herencia entre interfaces

15 <<interface>> InterfazPadre ClaseHija class ClaseHija implements InterfazPadre { Figura 22. Relación de herencia por implementación 1.8. Recapitulación Una vez estudiados todos los detalles de clases, objetos y relaciones, en este apartado se presentan de nuevo los diagramas de clases y objetos mostrados en el apartado 1.4. Dichos diagramas se han completado indicando los tipos de relaciones entre las clases, la navegabilidad, la multiplicidad, los roles, etc. El diagrama de clases completo se presenta en la figura 23. Ter turno Turno JUGADORES 2 {array tablero Tablero ficha FICHAS Ficha {array * Coordenada Figura 23. Diagrama de clases completo El diagrama de objetos que se tenía se ha completado añadiendo la navegabilidad, quedando como se muestra en la figura 24.

16 Notación UML para modelado Orientado a Objetos :Ter :Turno :Tablero :Coordenada : : :Ficha :Coordenada :Ficha :Ficha Figura 24. Diagrama de objetos completo 1.9. Consideraciones Observando la notación gráfica de UML para las clases, se puede apreciar que se indican los diferentes atributos de una clase. Estos atributos pueden ser objetos de otras clases, lo que va a marcar seguro algún tipo de relación entre ellas. Por lo tanto, es necesario tomar una decisión con respecto al lugar en el que se ponen dichos atributos, de forma que en el diagrama de clases no sea redundante. Un ejemplo de esta situación se muestra en la figura 25. Persona fechanacimiento: Fecha Libro publicacion: Fecha (a) Persona Fecha Libro fechanacimiento publicacion (b) Figura 25. Equivalencia parcial entre notaciones

17 Como se puede apreciar, en la figura 25(a) el atributo que hace referencia a la fecha de nacimiento de una persona va incluido en la parte central de la notación gráfica de la clase Persona. Sin embargo, en la figura 25(b) la fecha de nacimiento de la persona se manifiesta a través de una relación entre clases. Para intentar unificar la forma de representar nuestros programas orientados a objetos, en principio se va a optar por la segunda opción (figura 25(b)), y sólo en aquel caso en el que el diagrama esté muy cargado, se optará por representar algunos atributos mediante la primera opción (figura 25(a)). 1.10. Bibliografía G. Booch, I. Jacobson, J. Rumbaugh; El Lenguaje Unificado de Modelado. Manual de Referencia. Addison Wesley.