| 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. |
Você pode 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.
Você pode 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 subseqüentes podem ser letras minúsculas, letras maiúsculas ou números. Você pode 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, você poderá criar um projeto make padrão C++, que utiliza um makefile criado ou existente, ou poderá criar um projeto make gerenciado, que gera o makefile automaticamente.
Quando a transformação de UML em C++ executar, ela gera saída no projeto C++ de destino, e a saída tem a mesma hierarquia dos elementos no modelo UML de origem. Se você selecionar o DCMP doModelagem Reconciliada na configuração da transformação, quando a transformação de C++ em UML, ou reversa, gerar elementos UML na mesma hierarquia do projeto C++.
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 | Enumeração (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 modelo | 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 modelo | 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, você pode permitir que uma transformação crie relacionamentos de rastreio dos elementos de modelo de origem com os elementos gerados no projeto de destino. Depois, você pode 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 |
|---|---|---|
![]() |
#ifndef CLASS1_H
#define CLASS1_H
//Iniciar seção para o arquivo Class1.h
//TAREFA A FAZER: Incluir definições preservadas
//Encerrar seção para o arquivo Class1.h
//@uml.annotationsderived_abstraction="platform:/resource/MyModels/UMLModel.emx#_biwQUHdCEduVaMk1fL7Qcw"
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
class Class1 {
//Iniciar seção para Class1
//TAREFA A FAZER: Incluir atributos a serem preservados
//Encerrar seção para Class1
private:
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int attribute1;
public:
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation1();
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation2();
}; //encerrar Classe Class1
#endif
|
![]() |
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. Você pode especificar quais operações padrão a transformação UML-para-C++ gera para as classes, estruturas e uniões em um modo UML. Você também pode incluir um estereótipo, que representa uma das operações padrão, na operação de uma classe em seu modelo. A transformação UML-para-C++ aplica a visibilidade da operação UML às operações padrão geradas, mas ignora o nome e os parâmetros da operação UML.
A transformação gera arquivos de código C++ nos projetos e pastas C++ que são especificados como o destino da transformação.
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.