Download Generación código Java de operaciones

Document related concepts
no text concepts found
Transcript
G80 - Advanced Computation
Generación de Código con BOUML
Patricia López & Julio Medina
Computadores y Tiempo Real
Santander, 2013
1
Generación de código en BOUML
Para generar el código, hay que generar un artifact (.java) para cada clase.



Generamos una vista de desarrollo: New Deployment View
La asociamos a la vista de clases: Botón derecho sobre la vista de clases => Edit
=> deployment view
Creamos un artefacto (.java) para cada clase : Botón derecho en la clase =>
Create source artifact
Si no hemos asociado la vista de despliegue a la de clases no nos ofrece esa
opción. Al crear los artifacts, aparecen en la vista de despliegue
Elegir el directorio raíz en que se van a generar las clases: Botón derecho en
el proyecto => Edit generation settings => Directory
Generar el código:


Botón derecho en el proyecto => Generate => Java : Se genera el código de
todas las clases para las que hayamos definido un artifact
Botón derecho en una clase => Generate => Java: Se genera el código de esa
clase
Santander, 2013
Code generation
P. López & J.Medina
2
Generación de código (continuación)
Si queremos generar el código por
paquetes

Edit en el paquete donde esté el
deployment view => Java


directory: Directorio donde se
generarán las clases definidas en ese
paquete. Si se ha especificado un
directorio raíz, es relativo a él.
package: Nombre del paquete Java (el
que aparece en la cabecera de la clase).
Conviene generar un proyecto Eclipse,
que coincida con el directorio principal.

Así, pulsando Refresh sobre el proyecto,
se irán actualizando los paquetes y clases
que vayamos generando.
Santander, 2013
Code generation
P. López & J.Medina
3
Aspectos a tener en cuenta para una correcta generación
Atributos:


Definir correctamente los tipos. Aquellos que no correspondan a tipos
primitivos, definirlos con notación Java. Ej: List<String>
Definir estereotipos para las agregaciones múltiples: list, set, vector,
map, etc.
Operaciones.


Definir todos los parámetros de una operación, incluidos los que
devuelven “void”.
Para cada operación con parámetros de entrada, pulsar “Default
Definition” en su pestaña Java (para que tenga en cuenta los
parámetros) antes de la generación del código.
Declarar las excepciones de usuario extendiendo a Exception
Santander, 2013
Code generation
P. López & J.Medina
4
Generación código Java en Bouml
Edit sobre una clase =>
Pestaña Java
Patrón de generación
que se aplica
Resultado
Cuando se pulsa
“Default definition”,
se aplica el patrón de generación
Santander, 2013
Code generation
P. López & J.Medina
5
Modificación de los patrones de generación de código
Proyecto => Edit => Edit Generation Settings
En la pestaña Types
están los mapeados
de tipos primitivos
Santander, 2013
Code generation
P. López & J.Medina
6
Patrones de generación
En el resto de
pestañas Java[i]
están los patrones
de generación del
resto de elementos:
clases, interfaces,
atributos,
asociaciones, etc
Santander, 2013
Code generation
P. López & J.Medina
7
Generación código Java de atributos
Santander, 2013
Code generation
P. López & J.Medina
8
Generación código Java de atributos
Santander, 2013
Code generation
P. López & J.Medina
9
Generación código Java de asociaciones múltiples
EMA
1..*
magnitudesMeteorologicas
MagnitudMeteorologica
Santander, 2013
Code generation
P. López & J.Medina
10
Generación código Java de asociaciones múltiples (incorrecto)
EMA
1..*
magnitudesMeteorologicas
MagnitudMeteorologica
Santander, 2013
Code generation
P. López & J.Medina
11
Generación código Java de asociaciones múltiples

Hay que definir el tipo de asociación mediante un
estereotipo. BOUML ofrece como posibilidades:
•
List : Mapeado a la interfaz List de Java
•
Set : Mapeado a la interfaz Set de Java
•
Map : Mapeado a la interfaz Map de Java
Santander, 2013
Code generation
EMA
<<list>>
1..*
magnitudesMeteorologicas
MagnitudMeteorologica
P. López & J.Medina
12
Generación código Java de operaciones
Definir siempre el valor de retorno, incluso cuando sea void
(excepto en constructores)
Santander, 2013
Code generation
P. López & J.Medina
13
Generación código Java de operaciones (incorrecto)
La implementación obtenida inicialmente no muestra los argumentos de entrada
Santander, 2013
Code generation
P. López & J.Medina
14
Generación código Java de operaciones
Pulsando Default Definition genera los parámetros correspondientes
Santander, 2013
Code generation
P. López & J.Medina
15
Generación de código de excepciones
En Java una excepción extiende siempre a la clase Exception
Para que BOUML genere el código de forma adecuada,
hacemos que todas las excepciones de usuario extiendan a una
clase Exception (para la cual no generaremos código).
Exception
UserException
Santander, 2013
Code generation
P. López & J.Medina
16
Generación cuerpo de las operaciones
Podemos incluso generar el código que queremos que aparezca
en el cuerpo de las operaciones:


Para ello tenemos que asignar a la variable de entorno
BOUML_EDITOR un editor cualquiera (bloc de notas, p.e.)
Pinchando Edit Body en la pestaña anterior, nos abre una ventana del
editor elegido y editamos el cuerpo del procedimiento (corresponderá
al identificador $body del patrón de generación)
Podremos editar directamente el texto :


Santander, 2013
En métodos muy sencillos
Para que Java no de errores de compilación porque no se devuelven los
tipos de datos que se requieren.
Code generation
P. López & J.Medina
17
Dependencias externas
Para incluir dependencias de paquetes externos (java.util, java.io, etc),
añadimos el correspondiente import directamente en el artifact.

Santander, 2013
Botón derecho sobre el artifact => Edit => Java Source y lo editamos
directamente debajo del campo ${imports}
Code generation
P. López & J.Medina
18