Classes, Enumerações e Interfaces que as Transformações UML-para-C++ Transformam

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.


Feedback