Generando código a partir de UML con Eclipse

Eclipse tiene un proyecto llamado EMF (Eclipse Modeling Framework) muy majo para dibujar diagramas UML2. Pero mi objetivo en este artículo es dibujar un diagramas de clases UML2 y generar el esqueleto de clases correspondiente.

En la arquitectura de la aplicación se recomienda tener tus modelos de dominio separados de servicio, lógica de negocio etc. EMF te permite crear tu diagrama de clases y luego generarte el código correspondiente.

Podemos instalarnos los plugins de EMF en nuestra inatalación de Eclipse, o descargarnos directamente la versión de Eclipse preparada para el modelado. Os recomiendo la segunda por ser más límpia, al menos para probar.

Os dejo el proyecto producto final de este artículo: Eclipse UML2 to code project.

Y ahora !! que empiece el espectaculo¡¡:

Crea un nuevo proyecto: File > New > Project… > Empty EMF Proyect

Dentro del directorio model nos creamos nuestro diagrama: New > Other… > Ecore Tools > Ecore Diagram.

Nos dibujamos nuestro modelo utilizando la paleta, y la vista de properties:

Diagrama de clases

Es muy intuitivo dibujar el diagrama. En la vista properties de la asociación introducimos la cardinalidad y marcamos “Is Containment” para hacer que sea de composición.

Ahora tenemos que crear un fichero de transición tipo .genmodel. Seleccionamos el fichero .ecore del diagrama que queremos generar el código, y con el botón derecho New > Other… > Eclipse Modeling Framework > EMF Generator Model.

Dentro del fichero .genmodel podemos generar código de la siguiente manera:

Generator

y …. !!! MAGIA ¡¡¡ tenemos tres paquetes:

Generated code

Si pinchas la imagen anterior verás como se ha quedado el directorio src/ del proyecto:

  • classdiagram: Tiene el modelo a base de interfaces como mandan los cánones del desacoplamiento.
  • classdiagram.impl: Implementación del modelo y de la Factoria para generar las clases.
  • classdiagram.util: Implementación de la AdapterFactory.

Además del modelo con la implementación genera código para inyectar dependencias a través de factorias. Viene además con los comentarios de JavaDoc bien puestos para que los redactes.

Todos los getters/setters de los atributos definidos en el diagrama de clases.

Todos los métodos anotados con @generated, si no quieres que se reescriba en futuras regeneraciones de código le quitas la anotación.

Para profundizar en este tema, y en el de modelado UML2 con Eclipse, y para otros muchos temas de Eclipse/Java os recomiendo la página de Vogella (es un crack el tío).

6 thoughts on “Generando código a partir de UML con Eclipse

  1. Felicidades muy buen articulo, en pocas lineas explica de manera clara como generar código JAVA a partir de UML, por medio de EMF, tengo una duda hay posibilidad de incluir otros tipos de diagramas UML (secuencia,caso de uso,etc), como por ejemplo en el plugin UML2.0 de eclipse, o que alternativa me recomienda para en base a estos diagramas generar el código JAVA, he visto también algo de el plugin Acceleo pero no veo claro

  2. hola de ante mano un saludo y felicitaciones por este articulo.
    queria saber si puede usted pasarme su correo electronico para hacerle unas cuantas preguntas sobre este tema
    porque estoi estudiando para tecnico en informatica y en este momento tengo un proyecto sobre este tema sin mas por el momento espero que me responda GRACIAS espero una pronta respuesta

  3. Gracias por el tuto,

    encontre muchas paginas por internet pero ninguna indicaba exactamente como hacerlo, ya sabes todas te dicen ‘hace x,y,j,k….’ pero no te explican exactamente como hacerlo xD

    Se agradece el aporte 😉

  4. Hola muy bueno tu post, oye una pregunta instale el plugin en mi eclipse y a parecer todo bien, pero sucede que al querer hacer el segundo paso, este en concreto “Dentro del directorio model nos creamos nuestro diagrama: New > Other… > Ecore Tools > Ecore Diagram.” pues que en mis opciones no aparece la carpeta Ecore Tools, ya revise la lista de plugins instalados ya busque por todos lados y no aparece asi que no se que fallo, tendras alguna idea del por que?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>