Vários fatores determinam como a transformação UML-para-C++ gera
elementos C++ de classes, enumerações e interfaces.
Referências às Classes da Biblioteca de Modelos Padrão
Por padrão, se um modelo
contém uma referência a uma classe na Biblioteca de Modelos Padrão (STL), a transformação gera uma diretiva
de inclusão que especifica o nome do arquivo de cabeçalho correspondente. Por exemplo, se um modelo contém
uma referência à classe STL denominada vector<>, a transformação gera a seguinte diretiva de inclusão:
#include <vector>.
Dica: É possível editar essa preferência para a
transformação de UML em C++.
Classes UML
A transformação gera um arquivo de
cabeçalho e, opcionalmente, um arquivo de corpo, para cada classe especificada na
origem da configuração de transformação. Por padrão, um arquivo de corpo tem .cpp
como uma extensão de nome de arquivo. A transformação gera estruturas, uniões e
typedefs C++ de classes UML que possuem o estereótipo «cpp_struct», «cpp_union» ou
«cpp_typedef» aplicado.
Você deve aplicar o perfil de transformação C++
antes de poder aplicar esses estereótipos a elementos em seu modelo. A transformação
não gera arquivos de corpo para os seguintes itens:
- Classes que possuem o estereótipo «cpp_typedef» aplicado
- Classes que possuem o estereótipo «cpp_struct», «cpp_typedef» ou «cpp_union» aplicado e não contêm
operações
- Classes que possuem o estereótipo «cpp_struct», «cpp_typedef» ou «cpp_union» aplicado e que contêm
somente operações abstratas
- Classes que não possuem um estereótipo aplicado e não contêm operações
- Classes que não possuem um estereótipo aplicado e contêm somente operações abastratas
A transformação designa o nome da classe ao arquivo de cabeçalho
e arquivo de corpo. Se o nome da classe não estiver em conformidade com as regras de de
nomenclatura C++, ou se o nome não for exclusivo, a transformação designará um novo nome
ao arquivo de cabeçalho e de corpo. O arquivo de corpo gerado contém uma diretiva #include
para o arquivo de cabeçalho correspondente.
A transformação gera
nos arquivos de cabeçalho o código para as classes de modelo UML e os corpos de métodos para as classes
de modelo.
Enumerações UML
A transformação gera uma
enumeração C++ para cada enumeração UML especificada na origem da configuração de
transformação. Se necessário, a transformação designará um nome exclusivo que esteja
em conformidade com as regras do C++; caso contrário, a enumeração C++ gerada terá o mesmo
nome que a enumeração UML. A transformação transforma os literais de enumeração UML
em literais de enumeração C++.
Para gerar enumerações anônimas, é necessário aplicar o perfil
Transformação C++ ao modelo de origem; depois aplicar o
estereótipo«cpp_enum» à enumeração e definir sua
propriedade isAnonymousEnum para true.
Interfaces UML
A transformação transforma interfaces
UML em classes C++. As operações UML na interface são transformadas
em métodos virtuais C++ puros.
Classes, Enumerações e Interfaces UML Aninhadas
A
transformação não gera um arquivo de cabeçalho e de corpo separado para elementos
aninhados. Em vez disso, a transformação inclui informações sobre os elementos aninhados
no arquivo de cabeçalho e de corpo da classe em que eles estão contidos.