Relaciones de asociación de UML

La transformación transforma las relaciones de asociación en variables de miembro en código C++. Para las asociaciones que no son de composición, la transformación añade el signo de puntero (*) al calificador de tipo del atributo. Si se especifica la multiplicidad y se establece en un número concreto (que tenga el mismo rango inferior y superior), la transformación añade una especificación de matriz al atributo.

La transformación utiliza las propiedades de fin de asociación siguientes para generar el código: 

Propiedad

C++

Nombre

Crea una variable de miembro nueva con el nombre especificado (realiza la validación del nombre)

Visibilidad

Determina la visibilidad de la variable de miembro generada

Relaciones de generalización de UML

Por omisión, la transformación genera herencias públicas para el destino de la relación de generalización de UML. La transformación incluye de forma automática el archivo de cabecera para el destino en el archivo de cabecera generado. La transformación en C++ permite herencias múltiples.  

Puede aplicarse el estereotipo cpp_generalization para especificar la visibilidad (pública, protegida, privada y por omisión) de una relación de generación determinada.  

Relaciones de "uso" de UML

Normalmente, una relación de "uso" indica una referencia a la clase o a la enumeración. Por omisión, una relación de uso se transforma en una referencia de reenvío en el archivo de cabecera generado y en una directriz de "inclusión" en el archivo de cuerpo.  

Si se aplica el estereotipo cpp_dependency y el atributo isInclusionInHeader del mismo se establece en verdadero, la transformación genera la directriz de inclusión en la cabecera.  

Puede utilizarse una relación de "uso" para indicar relaciones de "amigo" entre clases aplicando el estereotipo cpp_friend a la relación. La transformación incluye la cláusula "friend" en el archivo de cabecera generado (por ejemplo, "friend class Clase1;"). La transformación no genera un índice del cuerpo para las funciones de "amigo" y añade de forma automática una dependencia sobre el código generado en la clase amigo.  

Relaciones de "implementaciones" UML

Una clase UML puede implementar una interfaz UML. Esta relación se convierte en una herencia pública en clase C++.

Parámetros de plantilla de UML

La transformación transforma una clase UML con parámetros de plantilla en una clase de plantilla.

Relaciones de "vinculación" de UML (clases para las que se han de crear instancias)

La transformación considera que una clase UML con una relación de "vinculación" y un destino de Clase1 es una instancia de la clase de plantilla Clase1. La transformación utiliza la sustitución de parámetros que la relación de vinculación especifica para resolver los parámetros formales en parámetros reales.

Aparece un aviso si una clase tiene más de una relación de "vinculación". Si una clase tiene más de una relación de vinculación, la transformación utiliza la primera para generar el código.

La transformación añade los tipos de datos de los parámetros reales a la lista de inclusión de la clase para la que se han de crear instancias.

La figura siguiente muestra la relación de creación de instancias a la que la transformación proporciona soporte, en la que una clase es una clase con parámetros y otra clase es una clase para la que se han de crear instancias.

La transformación no proporciona soporte a patrones de uso más complejos de clases de plantilla, incluidas las variables estáticas de plantillas y las clases con parámetros que se utilizan como parámetros formales.

Al principio

Condiciones de uso | Información de retorno
(C) Copyright IBM Corporation 2004. Reservados todos los derechos.