Configuración de ejemplo para una transformación de modelo a modelo que genera varios objetos a partir de un solo objeto de entrada

Este ejemplo muestra cómo utilizar las declaraciones de correlación interdependientes para generar varios objetos a partir de un solo objeto de entrada.
Antes de empezar
Para configurar el ejemplo, utilice las instrucciones de "Instrucciones de configuración para una transformación de modelo a modelo que genera varios objetos a partir de un solo objeto de entrada."
Por qué y cuándo se efectúa esta tarea
La transformación genera varios objetos relacionados a partir de un solo objeto de entrada sin que sea necesario que el autor de la transformación escriba mucho código personalizado.
  1. En el entorno de trabajo, en la vista Explorador de paquetes, expanda el proyecto origen, expanda Modelos y expanda Source1. Source1 contiene un paquete con dos clases: A y B.
  2. Expanda el proyecto destino y efectúe una doble pulsación sobre el archivo de configuración de transformación llamado transform source1 to target1.tc.
  3. En el editor de configuraciones de transformación, pulse Ejecutar.
  4. En el proyecto destino, expanda Modelos, y expanda Target1. Fíjese en que para cada clase del modelo de entrada, la transformación ha creado los elementos siguientes:
    • Una interfaz en la que el nombre de la interfaz es el nombre de la clase origen precedido por la letra "I"
    • Una clase de implementación en la que el nombre de la clase de implementación es el nombre de la clase origen seguido de "Impl"
    • Una realización de interfaz de la clase de implementación a la interfaz
Resultados

Para ver cómo funciona la transformación, considere el problema que resuelve: suponga que está creando una transformación y que desea utilizar la declaración de correlación Class2InterfaceRealization en la declaración de correlación Package2Package para crear la realización de interfaz. Sin embargo, la característica destino de la correlación de subcorrelación, una realización de interfaz de una clase UML, no es visible en la declaración de correlación Package2Package. ¿Cómo puede correlacionar con la característica destino faltante?

Nota: Los números de elemento del texto siguiente hacen referencia a los elementos de la figura adjunta.

Para proporcionar realización de interfaz como destino, debe crear una subcorrelación de la característica packageElement a la característica packageElement en la declaración de correlación Package2Package (elemento 1 en la figura). Esta subcorrelación hace referencia a la declaración de correlación Package2Package padre, recursivamente y esta forma proporciona soporte para paquetes anidados y su contenido. Como resultado, ahora puede definir subcorrelaciones adicionales de la característica packageElement a la característica packageElement. Las subcorrelaciones pueden hacer referencia a otras declaraciones de correlación: Class2Class (elemento 2) y Class2Interface (elemento 3).

Cuando crea la declaración de correlación Class2Class puede utilizar una subcorrelación (elemento 4) que tiene como entrada todo el elemento Class. Para la salida, seleccione interfaceRealization. El resultado de esto consiste en hacer disponible la declaración de correlación Class2Interface con la que puede crear dos subcorrelaciones adicionales (elementos 5 y 6) que también tienen como entrada todo el elemento Class y como salida la característica de proveedor y la característica de cliente. Al generar el código de transformación, las subcorrelaciones definidas no crean objetos de salida pero crean referencias a objetos de salida creados por transformaciones generadas a partir de otras declaraciones de correlación.

Cuando genera el código de transformación, las características de salida de proveedor y de cliente deben hacer referencia a los objetos UML generados a partir de los objetos UML de entrada. Para especificar los objetos de salida a los que hacer referencia, escriba las definiciones de subcorrelación de modo que identifiquen la declaración de correlación, Class2Class o Class2Interface, cuya transformación generada es responsable de generar el objeto de salida específico, Clase o Interfaz, de la misma entrada.

Para obtener más detalles, examine la configuración de la transformación de ejemplo. En la figura, las flechas que señalan desde una subcorrelación a la parte superior de una declaración de correlación indican que la subcorrelación hace referencia a las declaración de correlación. Por ejemplo, la flecha llamada "1" hace referencia a la declaración de correlación Package2Package.

Diagrama compuesto que muestra relaciones entre declaraciones de correlación en el ejemplo
Información relacionada
Instrucciones de configuración para una transformación de modelo a modelo que genera varios objetos a partir de un solo objeto de entrada

Comentarios