Esta transformação utiliza o perfil "Transformação C++" para transportar informações sobre o modelo que não está prontamente disponível no UML. O perfil inclui os seguintes estereótipos:
Estereótipo |
Aplicável a |
Atributos |
Tipo |
cpp_type |
Parâmetro, Propriedade |
isMutable, qualificador (Cadeia), InitializerKind (Enumeração) |
Booleano com valor padrão ou falso |
cpp_generalization |
Generalização |
GeneralizationKind |
Enumeração |
cpp_struct |
Classe |
|
Booleano com valor padrão ou falso |
cpp_union |
Classe |
isAnonymousUnion |
Booleano com valor padrão ou falso |
cpp_typedef |
Classe |
ImplementationType |
Cadeia |
cpp_dependency |
Dependência |
isInclusionInHeader |
Booleano com valor padrão ou falso |
cpp_friend |
Dependência |
|
Booleano com valor padrão ou falso |
cpp_namespace |
Pacote, Modelo |
NamespaceName |
Cadeia |
cpp_operation |
Operação |
isInline, isVirtual, isFriend |
Booleano com valor padrão ou falso |
cpp_constructor |
Operação |
isExplicit, isInline |
Booleano com valor padrão ou falso |
cpp_copy_constructor |
Operação |
isExplicit, isInline |
Booleano com valor padrão ou falso |
cpp_destructor |
Operação |
isVirtual, isInline |
Booleano com valor padrão ou falso |
cpp_assignment |
Operação |
isInline |
Booleano com valor padrão ou falso |
Você não deve aplicar mais de um estereótipo de transformação C++ em um objeto UML. Aplicar múltiplos estereótipos tem os seguintes efeitos:
· Classe UML (cpp_struct, cpp_union, cpp_typedef): A transformação cria somente um objeto, independentemente de quantos estereótipos são aplicados. A transformação dá prioridade ao cpp_typedef. Se o estereótipo cpp_typedef não é aplicado e se você aplicar ambos os estereótipos, cpp_struct e cpp_union, a transformação gera uma estrutura C++ sem operações padrão.
· Dependência UML (cpp_dependency, cpp_friend): Se você aplicar ambos os estereótipos, a transformação processa ambos os estereótipos e encaixota um relacionamento "amigo" e uma dependência.
· Operação UML (cpp_operation, cpp_constructor, cpp_copy_constructor, cpp_destructor, cpp_assignment): A transformação cria somente um objeto, independentemente de quantos estereótipos são aplicados às operações. A seguinte lista mostra a prioridade de estereótipos, a partir do mais alto para o mais baixo:
o cpp_constructor,
o cpp_copy_constructor,
o cpp_destructor,
o cpp_assignment,
o cpp_operation