Para obter informações adicionais sobre como configurar preferências de transformação, consulte o link para o tópico da tarefa "Transformando Modelos" relacionado no final deste tópico.
| DCMP | Objetos de Origem de UML |
|---|---|
| Modelos Concretos de Valor Inicial de Modelos Conceituais | É possível selecionar os seguintes elementos de um ou mais
projetos UML na área de trabalho atual:
|
| Desenvolvimento de Unidade de Modelos Conceituais | |
| Modelagem Reconciliada | É possível selecionar um ou mais elementos na lista anterior: Se você selecionar vários pacotes ou classificadores não aninhados como a origem da transformação de UML em C++, eles devem estar contidos no mesmo modelo UML. Se você selecionar um ou mais classificadores não aninhados como a origem da transformação de UML em C++, a transformação reversa, ou de C++ em UML, determina o pacote de nível-raiz do primeiro classificador não aninhado que a transformação reversa processa. A transformação reversa gera sua saída nesse pacote de nível-raiz. |
É possível especificar os elementos de modelo que a transformação deve converter em código C++ ao criar ou editar uma configuração de transformação, ou selecionando os elementos de modelo diretamente no modelo. Os elementos de modelo selecionados são a origem para uma transformação. Uma mensagem de erro será gerada pela transformação se você selecionar um contêiner e seus elementos de modelo ou o mesmo elemento de modelo duas vezes.
É possível utilizar componentes para organizar os elementos de um modelo que você deseja converter em código C++. Se você selecionar um componente, a transformação UML-para-C++ converterá pacotes e classes relacionados em código C++ quando um componente tiver um relacionamento de uso com pacotes e classes.
Os nomes dos elementos de origem UML podem começar com uma letra minúscula, letra maiúscula ou um sublinhado (_). Os caracteres subsequentes podem ser letras minúsculas, letras maiúsculas ou números. É possível utilizar dois-pontos (:) em um nome de operação para especificar nomes completos para funções amigáveis. A transformação prefixa um nome que começa com um número ou um caractere inválido com um sublinhado (_). A transformação verifica se os nomes em um espaço de nomes relevante são exclusivos; se os nomes não forem exclusivos, a transformação designará o nome duplicado como um sufixo que consiste em um sublinhado e um número incremental; por exemplo _1.
Para melhorar a capacidade de leitura do código gerado e minimizar as diferenças entre o modelo UML e o código gerado, você deve corrigir nomes inutilizáveis no modelo UML de origem antes de executar a transformação.
Um destino de transformação válido é um projeto C++. Se você criar um contêiner de destino, será possível criar um projeto C++ padrão, que usa um comando makefile criado ou existente, ou criar um projeto de criação gerenciado, que gera o comando makefile automaticamente.
Quando a transformação UML em C++ é executada, ela gera a saída no projeto C++ de destino e a saída possui a mesma hierarquia que os elementos no modelo UML de origem. Se você selecionar o DCMP Modelagem Reconciliada na configuração de transformação, na transformação C++ em UML ou reversa, a transformação gerará elementos UML na mesma hierarquia que o projeto C++.
A transformação gera arquivos de código C++ nos projetos e pastas C++ que são especificados como o destino da transformação.
Para facilitar a sincronização de código C++ e elementos de modelo UML, é possível especificar que a transformação define um tipo de link chamado de relacionamento rastreável entre os elementos UML e os elementos de código C++. É possível especificar esta opção ao configurar uma transformação C++ em UML ou UML-para-C++ para usar o Protocolo de Gerenciamento de Contrato de Design (DCMP) do Modelagem Reconciliada ou Conceitual. Ao executar a transformação, ela cria relacionamentos rastreáveis incluindo anotações e identificadores nos elementos gerados. A geração de relacionamentos rastreáveis evita que a transformação C++ em UML gere elementos duplicados no modelo de UML.
A transformação gera relacionamentos rastreáveis para os seguintes elementos:
A tabela a seguir lista como a transformação UML-para-C++ transforma elementos de modelo UML em código C++.
| Elemento de Modelo UML | Elemento de código C++ |
|---|---|
| Relacionamento de associação | Atributo de classe |
| Classe | Classe (arquivos .h e .cpp) |
| Relacionamento de dependência | Inclusão, referência de encaminhamento ou nenhum Nota: As configurações na página Propriedades de
C++ da janela Propriedades determinam o que é gerado no cabeçalho e nos arquivos de implementação.
|
| Enumeração | Enum (arquivo .h) |
| Relacionamento de generalização | Herança de classe |
| Operação | Operação |
| Pacote | Pasta |
| Parâmetro | Argumento de operação |
| Propriedade | Atributo de classe |
| Relacionamento de Ligação de Gabarito | Classe instanciada (arquivo .h) |
| Classe de modelo | Arquivo de cabeçalho (arquivo .h) que tem o mesmo nome que a classe de modelo
UML Nota: O código do corpo de método também é gerado no arquivo de cabeçalho.
|
| Parâmetro de gabarito | Parâmetro para uma classe parametrizada |
Para obter informações adicionais sobre como a transformação transforma elementos de modelo UML, consulte o tópico de referência relacionada no final desse tópico.
Para entender como os elementos de um modelo de origem estão relacionados aos elementos em um projeto de destino, é possível permitir que uma transformação crie relacionamentos de rastreio dos elementos de modelo de origem com os elementos gerados no projeto de destino. Depois, é possível visualizar os relacionamentos de rastreio em um diagrama de tópicos, criando e executado consultas do modelo.
A criação de relacionamentos de rastreio é útil em projetos grandes que podem conter vários modelos e várias configurações de transformação. Você também pode criar e executar consultas de rastreabilidade que exibem como a saída da transformação está relacionada às especificações de software e aos elementos de modelo.
A transformação não altera o modelo de origem quando você especifica para a transformação gerar relacionamentos de rastreio.
| Elemento UML | Saída da Transformação | Relacionamento Derivado em um Diagrama de Classes |
|---|---|---|
![]() |
|
![]() |
As operações padrão são construtores, construtores de cópia, destrutores virtuais e não virtuais, operadores de designação e métodos getter e setter. É possível especificar quais operações padrão a transformação UML para C++ gera para as classes, estruturas e uniões em um modelo UML. Também é possível incluir um estereótipo, que representa uma das operações padrão, na operação de uma classe no modelo. A transformação de UML em C++ aplica a visibilidade da operação UML para as operações padrão geradas, mas ignora o nome e os parâmetros da operação UML.
A transformação fornece funcionalidade de integração com os sistemas de controle de versão IBM® Rational Team Concert, CVS, Rational ClearCase, e Rational ClearCase LT, que possibilita efetuar o registro de saída dos arquivos automaticamente ou incluir novos arquivos. É necessário ativar os recursos de equipe para trabalhar com os sistemas de gerenciamento de configuração.