Documentos de Académico
Documentos de Profesional
Documentos de Cultura
umlToJava v2 PDF
umlToJava v2 PDF
Índice
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:
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.
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.
Por ello, se van a modelar tanto los aspectos estáticos como los aspectos
dinámicos de un programa orientado a objetos.
1.4. Diagramas
• Clases
• Relaciones
o De forma gráfica se trata de una línea que une las clases que relaciona.
Ter
Turno Tablero
Jugador
Ficha Coordenada
• Objetos
• Relaciones
:Ter
:Turno
:Tablero
:Coordenada
...
:Jugador
:Coordenada
:Jugador
:Ficha
:Ficha
:Ficha
jugar()
mostrar()
poner(t)
cambiar()
mostrar()
...
j:Jugador t:Tablero
poner(t)
<<create>> c:Coordenada
recoger()
poner(c,f)
...
1
Estereotipo: mecanismo de extensibilidad de UML para representar una distinción de uso. Es aplicable a
cualquier elemento de modelado.
5: mostrar()
1: jugar() 2: mostrar()
ter:Ter t:Tablero
4: c am
bi ar(
)
3: poner(t)
turno:Turno
j:Jugador
1.5. Clases
NombreClase
Atributos
Operaciones
Privado: -
Protegido: #
Público: +
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 {
...
}
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 {
...
}
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.
f:Ficha f:Ficha
color=`× ´ :Ficha
: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.
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.
1.7.1.1. Navegabilidad
class Jugador {
Jugador Ficha
private Ficha ficha;
}
1.7.1.2. Multiplicidad
class Jugador {
Jugador Ficha
private Ficha ficha;
}
*”,“1..*”, etc. En nuestro caso, simplemente indicaremos la parte máxima del rango y,
además, utilizaremos una restricción2 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 Jugador
{array} 2
class Ter {
1.7.1.3. Rol
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
class Jugador {
Jugador Ficha
ficha
private Ficha ficha;
}
2
Restricción: restricción de la semántica de un elemento de UML, que permite añadir nuevas reglas o
modificar las existentes.
1.7.2. Composición
Tablero
tablero
1.7.3. Uso
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.
class Jugador {
Jugador Coordenada public void mover(Tablero tablero) {
Coordenada c = new Coordenada();
c.recoger();
...
}
1.7.4. Asociación
Esta relación se representa en UML mediante una línea que une ambas clases,
como se puede apreciar en la figura 19.
class Jugador {
Jugador Ficha
ficha
private Ficha ficha;
...
}
1.7.5. Herencia
ClasePadre
<<interface>>
InterfazPadre
<<interface>>
InterfazPadre
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.
Ter
turno
tablero
JUGADORES 2 {array}
Turno Tablero
Jugador
ficha
FICHAS
{array}
* Coordenada
Ficha
:Ter
:Turno
:Tablero
:Coordenada
...
:Jugador
:Coordenada
:Jugador
:Ficha
:Ficha
:Ficha
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.
Persona Libro
(a)
fechaNacimiento publicacion
(b)
1.10. Bibliografía