Académique Documents
Professionnel Documents
Culture Documents
MODELADO
Basado en libro Programación en Java 6 de Ignacio Zahonero Martínez, Luis Joyanes Aguilar
BÚSQUEDA DE CLASES
Un problema desarrollado con técnicas O.O., en primer lugar debe responder a esta pregunta: ¿cuáles son los
objetos del programa?.
Los objetos son instancias de clases, entonces la primera etapa en el desarrollo O.O. exige la identificación de
clases, y posteriormente sus atributos y comportamiento (métodos).
La localización de clases debe pertenecer al dominio del problema y darles nombres que representen su
responsabilidad en la aplicación.
• Primero buscar las clases candidatas. Se identifica un conjunto amplio de clases candidatas.
• En segundo lugar, seleccionar de entre ellas las clases válidas. Aquellas que sean aplicables al dominio de
nuestro problema.
Bertrand Meyer: "No existe una receta milagrosa para identificar clases que pueda sustituir a la destreza individual
o al experiencia del propio desarrollador de aplicaciones. "
1
IDENTIFICAR LAS CLASES(I)
Existen diversos criterios para identificar clases candidatas. El sistema que propone UML:
En conversaciones con el cliente del sistema a desarrollar, preste atención a los sustantivos que
utiliza para describir las entidades de su negocio, ya que dichos sustantivos se convertirán en clases
candidatas de su modelo. También preste atención a los verbos que escuche, constituirán
operaciones de sus clases. Los atributos surgirán como sustantivos relacionados con los nombres de
las clase.
Una vez que tenga una lista básica de las clases, pregunte a los clientes qué es lo que cada clase
hace dentro del negocio responsabilidades de la clase.
Cuando se parte de un documento con los requisitos del problema, el mejor sistema para identificar
clases, o mejor clases candidatas:
Lea la definición o descripción de las especificaciones del problema y localice los nombres o frases
con nombre y verbos o frases con verbos. Los nombres son buenos indicadores de la existencia
de objetos en el modelo OO y los verbos son candidatos a métodos.
Después de encontrar todos los nombres, se examina lista y se decide qué nombres son realmente
clases en nuestro sistema. Pueden aparecer nombres que simplemente sean atributos de una clase,
por ejemplo un nombre que no puede ser clase es el número de nómina. Es un dato que no
contiene acciones, será un atributo de la clase Empleado.
2
CONCEPTOS QUE IDENTIFICAN CLASES
Cuando se buscan clases candidatas en el documento de requisitos las siguientes cuestiones ayudan a
identificarlas:
• ¿Se dispone de información que se pueda analizar o almacenar?. En definitiva eventos a recordar. La
información puede ser concepto que se debe registrar en el sistema y por consiguiente clase en el dominio
del problema. Por ejemplo: fecha y hora de acceso de un coche a un parking, compra con una tarjeta.
• ¿Existen sistemas externos?. Sistemas con los que interactúa el sistema en desarrollo. Si es así, serán
considerados clases.
• ¿Existen dispositivos que el sistema puede manejar?. Cualquier dispositivo externo conectado al sistema se
convierte en clase candidata. Por ejemplo, barrera automática, sensor de temperatura, etc.
• ¿Existen partes organizacionales?. Sucursal, departamento, comité etc, siempre que haya que guardar
información específica.
• ¿ Qué roles juegan los actores en la aplicación?. Gerente, Oficinista, Supervisor, etc, son diferentes roles que
una persona puede desempeñar en un trabajo. Jefe de Estudios, Alumno, Director, Profesor, son roles que
desempeñan personas en un Consejo Escolar. Estos roles se pueden ver como clases.
• ¿Hay lugares de los que se necesite guardar información?. Si es así serán candidatos a clases.
• ¿Hay componentes, bibliotecas de clases de proyectos anteriores ?. Normalmente contendrán clases
candidatas.
Regla: convertir en clase candidata todo aquel concepto del que haya que almacenar información
en el sistema, bien a corto o a largo plazo.
Controlar la gestión de una flota de diferentes vehículos: coches, camiones, aviones, helicópteros. Cada vehículo
dispone de un radio de acción y una capacidad de carga total. En un instante dado, un vehículo puede encontrarse
en un cierto lugar con una determinada carga.
Identificar clases. Del análisis del enunciado se extrae la siguiente lista de nombres y frases con nombre que
son clases candidatas:
Flota
Vehículo
Coche
Camión
Avión
Helicóptero
Radio de acción
Capacidad de carga
Lugar
Carga
3
EJEMPLO: FLOTA DE VEHÍCULOS(II)
Una vez realizada la primera lista de clases candidatas, se realiza un proceso de refinamiento que trate de evitar
una proliferación inútil de clases.
En esta aplicación parece que no es necesario declarar clases para gestionar el radio de acción y la capacidad de
carga. Estas características se pueden fijar como atributos de vehículo y son comunes a todo tipo de vehículo.
También, es lógico pensar que existen dos tipos de vehículos: terrestres y aéreos. Entonces la lista de clases:
Flota
Vehículo
Vehículo Terrestre
Vehículo Aéreo
Coche
Camión
Avión
Helicóptero
Lugar
Carga
Relaciones. Un flota contiene vehículos (agregación). Cada vehículo contiene una carga (agregación) y se
encuentra actualmente en un lugar. Hay diferentes tipos de vehículos que comparten propiedades y
comportamiento (generalización/especialización):
A partir de la lista de clases candidatas, para seleccionar las clases válidas se pueden seguir los
siguientes criterios:
• Necesidad de comportamiento. Las clases deben tener operaciones. Un clase sin operaciones puede
existir pero es conveniente una reflexión sobre su utilidad.
• Mas de un atributo. Una clase con un solo atributo es sospechosa de no ser clase, sino atributo de otra.
• Atributos y métodos siempre aplicables. Todos los objetos de una clase deben tener los mismos
atributos y métodos. Si se encuentra objetos de la misma clase con atributos, o métodos, diferentes, puede
ser que en realidad exista más de una clase, las cuales se relacionarán mediante generalización.
4
EJERCICIO 1 DE MODELADO DE CLASES
Biblioteca (nº 7)(I)
Encontrar las clases, relaciones y realizar un diagrama de clases del siguiente documento relativo a una biblioteca: por
cada libro existente el catálogo contiene el título, el autor y el número ISBN. Puede haber varios ejemplares de un libro.
Cada ejemplar de un libro tiene un único número de acceso. Los socios de la biblioteca tiene una clave para préstamo.
El sistema registra el nombre, dirección del lector y el número de clave por cada préstamo. Los socios sólo pueden
solicitar un libro en préstamo, el sistema mantiene un registro de los libros que un socio ha tenido en préstamo, junto
con la fecha de devolución.
Regla de oro: convertir en clase candidata todo aquel concepto del que haya que almacenar
información en el sistema, bien a corto o a largo plazo.
5
EJERCICIO 1, Biblioteca (III)
Relaciones
Catálogo "necesita" relacionarse (asociarse) con Libro para conocer sus detalles.
Catalogo * Libro
Ejemplar tiene las mismas propiedades que un Libro, además el atributo propio número de acceso.
Libro
Ejemplar
Un Préstamo se puede considerar que es una interacción entre Socio y Ejemplar . El socio toma un
ejemplar de un libro, los detalles del socio y del ejemplar son de interés para realizar el préstamo, así
como la fecha de entrega.
6
EJERCICIO 1, Biblioteca (V)
Con el fin de mantener información del sistema, habrá dos tipos de listas, una de socios y otra de
préstamos.
Lista
ListaSocio ListaPrestamo
Socio Prestamo
ListaPrestamo ListaSocio
Ejemplar
Prestamo Socio
7
EJERCICIO 2 DE MODELADO DE CLASES
Encuestas (I)
Se desea desarrollar un sistema de recogida de encuestas a través de internet. Cualquier
persona desde su navegador puede inscribirse en el sistema rellenando un formulario. El
formulario recoge los siguientes datos obligatorios del nuevo usuario:
• Apellidos y nombre.
• Alias de usuario para acceder al sistema.
• Dirección de correo electrónico.
• Temas en los que está interesado (seleccionando uno o más de los que se le ofrecen).
Para cada uno de estos temas, especificará un grado de preferencia en una escala de 1 a
10, según el grado de interés.
Una vez validados los datos, el sistema le devuelve al usuario una palabra clave única que le
permitirá acceder al sistema, junto al nombre de usuario. Periódicamente, el usuario recibirá
por correo un cuestionario sobre uno de los temas que seleccionó en su inscripción. Deberá
rellenarlo y devolverlo por la misma vía. Para contestar al cuestionario el usuario marcará una y
sólo una de las cuatro propuestas a cada pregunta, pero en el futuro se permitirá también
hacer preguntas de otros tipos, como preguntas abiertas, y se debe acomodar el análisis a esta
circunstancia. A partir de todos los cuestionarios recogidos sobre un tema, el sistema publicará
unos resultados estadísticos que podrán ser consultados desde una página Web.
Identificar clases. Del análisis del enunciado se extrae la siguiente lista de nombres y frases con nombre que
son clases candidatas: Y de verbos que pueden indicar operaciones.
Sistema
Encuesta
Persona
Formulario
Usuario
Apellido
Nombre
Alias
Correo
Tema
Escala
Clave
Cuestionario
Pregunta
Respuesta
8
SOLUCIÓN, Encuestas (III)
Antes de realizar el proceso de refinamiento, recordemos la regla de oro: convertir en clase candidata todo
aquel concepto del que haya que almacenar información en el sistema, bien a corto o a largo plazo.
En un principio se puede considerar que Formulario es una forma de agrupar Nombre, Apellido, alias y dirección
de correo. Tema sí tiene entidad para ser una clase, guarda información y tiene operaciones para manejar el
contenido . La selección de un tema tiene la característica (atributo) de el grado de interés. Usuario es el rol de
Persona en este contesto. En el enunciado del texto aparece Sistema para referirse a la aplicación. Entonces la
lista de clases:
Encuesta
Usuario
Tema
Selección
Cuestionario
Pregunta
Respuesta
Relaciones. El usuario realiza una o más selecciones, cada elección se corresponde con un tema (relaciones de
asociación). Cada Cuestionario está formado por un rango de preguntas, y cada pregunta por 4 respuestas
(agregación). El usuario puede participar en un número de encuestas indeterminado. Para elaborar una encuesta
se evalúan las contestaciones recibidas.
Diagrama de clases:
Tema
Selección
Cuestionario Pregunta Respuesta
1..* 4
1..*
0..*
Usuario Encuesta
El diagrama no recoge la contestación a las preguntas del formulario. Se mejora con una nueva clase: Contestación,
asociada con Encuesta. Además, para tener en cuenta la posibilidad de preguntas abiertas, se introduce la clase
PreguntaTest, que incorpora la peculiaridades de este tipo de preguntas.
9
SOLUCIÓN, Encuestas (V)
Pregunta
Tema
-nombre
+getNom
Selección
1..*
1..*
Usuario
0..* Encuesta
- nombre
-fecha 1..* Contestación
- apell
- numResp -orden
- correo
+getTexto
- clave
10
SOLUCIÓN, Sistema de monitorización (I)
A continuación se realiza un proceso de refinamiento. Parece que no es necesario declarar una clase para
representar el identificador de nodo. Estas característica se pueden fijar como atributo de nodo. En el enunciado
del texto aparece Sistema para referirse al problema, no tiene una responsabilidad en el dominio del problema.
Relaciones. Un red está compuesta de nodos (agregación).. Hay diferentes tipos de redes que comparten
propiedades y comportamiento (generalización/especialización). El monitor está relacionado con la red para
realizar su funcionalidad, es necesario establecer una relación de asociación entre monitor y red.
11
SOLUCIÓN, Sistema de monitorización (III)
Red
Monitor 1 .. * Nodo
darAlta identif
añadirNodo
darBaja
quitarNodo
12
PROBLEMA 2 DE MODELADO DE CLASES
Competencia de gimnasia
Se quiere diseñar un sistema para simplificar los marcadores de competiciones, tales
como gimnasia, salto de palanca, y barra fija. Existen distintas pruebas y distintos
competidores. Todo competidor puede participar en distintas pruebas y toda prueba
tiene muchos competidores. Cada prueba tiene varios jueces que califican al
competidor de la prueba. En algunos casos, un juez puede calificar más de una prueba.
Cada competidor realiza tres intentos, que es calificado por el conjunto de jueces de la
prueba.
13