Altova UModel 2024

Este ejemplo muestra cómo generar código C++ con UModel. Para ello, primero debe crear un proyecto simple en UModel, configurarlo para que genere código y generar el código.

 

Crear un nuevo proyecto de UModel y su estructura

En el menú Archivo haga clic en Nuevo. Esto creará un nuevo proyecto vacío con dos paquetes predeterminados ("Root" y "Component View"). A continuación haga clic con el botón derecho en el paquete "Root" y cree varios paquetes más, como se muestra a continuación (si todavía cono conoce bien la interfaz gráfica del usuario de UModel, consulte primero Tutorial de UModel y Cómo modelar).

um_cpp_codegen01

 

En este ejemplo el paquete "Vista Diseño" sirve como contenedor para los elementos que vayan a formar parte de su modelo (clases y diagramas de clases, por ejemplo), mientras que el paquete "MiEspacioDeNombres" sirve como espacio de nombres para todas las clases que se vayan a crear. Sin embargo, por lo general la estructura de paquetes no es en absoluto normativa, por lo que los puede organizar como quiera.

 

Haga clic con el botón derecho en el paquete "Vista Diseño" y seleccione Ingeniería de código | Establecer como raíz de espacio de nombres C++ en el menú contextual. Cuando UModel le pregunte, confirme que quiere aplicar el perfil C++ al paquete haciendo clic en Aceptar. Ahora el perfil C++ integrado en UModel está incluido en el proyecto.

um_cpp_codegen02

 

A continuación haga clic en el paquete "MiEspacioDeNombres" y marque la casilla <<namespace>> en la ventana Propiedades. Esto aplica el estereotipo "namespace" al paquete, cuyo icono cambia a ic-code-pack. Ahora puede crear clases bajo este espacio de nombres.

 

Crear clases C++

Puede escoger entre crear clases directamente desde la ventana Estructura del modelo o desde un diagrama de clases. Para este ejemplo crearemos un diagrama de clases desde la ventana Árbol de diagramas, como se muestra a continuación:

 

um_cpp_codegen03

 

Este ejemplo asume que todas sus clases deben generarse bajo el espacio de nombres "MyNamespace". Por tanto, cuando el programa le pida que seleccione un propietario para el diagrama, seleccione el paquete "MyNamespace" (imagen siguiente). Si escoge un paquete distinto, cualquier elemento que añada al diagrama pertenecerá al mismo paquete que el diagrama (lo cual puede no ser su intención).

 

um_cpp_codegen04

 

A continuación, cree las clases, los tipos y demás elementos necesarios para su modelo, como un diagrama simple que ilustre la clase Coche:

um_cpp_codegen05

 

En el diagrama anterior son de especial interés la enumeración TipoDeColor y el tipo de datos string. Estos tipos no son fundamentalmente C++, por lo que no están incluidos en el perfil C++ integrado en UModel. Por esta razón deben crearse explícitamente en el modelo usando respectivamente los botones de la barra de herramientas Enumeración um_ic_enumeration y TipoDeDatos um_ic_datatype. Los tipos fundamentales (como int o bool), por el contrario, están automáticamente disponibles para seleccionar a medida que usted teclea. Consulte también Finalización automática en clases. Para leer las instrucciones completas sobre diseño de clases y de sus miembros, consulte las secciones Clases de diagramas y Cómo modelar.

 

Configurar el proyecto para ingeniería de código

Haga clic con el botón derecho en el paquete "Component View" um_ic_component y añada un nuevo Componente um_ic_component (es decir, un componente de software). Haga clic en el nuevo componente de software y, en la ventana Propiedades, aplique la siguiente configuración a las propiedades:

 

Código del lenguaje del componente ("C++ 14" en este ejemplo)

Directorio de generación de código ("C:\codegen en este ejemplo")

 

Asegúrese también de que la casilla de la propiedad "usar para ingeniería de código" está marcada.

um_cpp_codegen06

 

A continuación, cree una relación RealizaciónDeComponente um_ic_realization entre las clases desde las que se debe generar el código C++ (Coche y TipoDeColor en este ejemplo) y el componente de ingeniería de código. Puede hacer esto desde un diagrama de componentes o, más fácilmente, como sigue:
 

 

En la ventana Estructura del modelo haga clic en la clase que el componente debe realizar (Coche y TipoDeColor en este ejemplo) y arrástrela hasta el componente de ingeniería de código (Component1).

um_cpp_codegen07

Haga lo mismo con la clase ColorType.

 

Nota: en caso de que olvide crear una relación RealizaciónDeComponente um_ic_realization para una clase, UModel sigue generando el archivo de código correspondiente, aunque aparecerán advertencias en la ventana Mensajes. Esta configuración puede cambiarse en Herramientas | Opciones | Ingeniería de código (en la casilla "Generar las realizacionesDeComponente que falten").

 

Generar código C++

Ahora puede generar el código C++:

 

1.En el menú Proyecto haga clic en Combinar el código de programa con el proyecto de UModel (o pulse la tecla F12). Aparecerá un cuadro de diálogo en el que puede ajustar si los cambios en el modelo se deben combinar con los cambios en el código o sobrescribirlos (si procede). Para este ejemplo los valores predeterminados son correctos, ya que el código se genera por primera vez. Para obtener más información, consulte Configurar la sincronización del código.

2.Haga clic en Aceptar. El resultado de la ingeniería de código se mostrará en la ventana Mensajes.

um_cpp_codegen08

© 2017-2023 Altova GmbH