A transformação UML-para-C++ inclui a tag @generated nos seguintes elementos:
Quando você reexecuta uma transformação UML-para-C++, por padrão, a transformação não sobrescreve corpos de métodos gerados por ela ou criados por um usuário. A transformação sempre preserva os corpos de métodos, independentemente se você remover, ou não, a tag @generated.
Embora a transformação sempre preserve os corpos de métodos, a tag @generated deve ser removida de um método para preservar as alterações estruturais no método. Por exemplo, você deverá remover a tag @generated do método se alterar a assinatura de método, incluir inicializadores em um construtor, incluir exceções em métodos ou incluir comentários no código-fonte.
| Elemento de Modelo UML | Código Gerado | Código Modificado | Código Gerado após a Reexecução da Transformação |
|---|---|---|---|
![]() |
Class1.h:#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
//@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
Class1.cpp:
#include "Class1.h"
//Iniciar seção para o arquivo Class1.cpp
//TAREFA A FAZER: Incluir definições preservadas
//Encerrar seção para o arquivo Class1.cpp
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1()
{
//TAREFA A FAZER Stub de método gerado automaticamente
return 0;
}
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation2()
{
//TAREFA A FAZER Stub de método gerado automaticamente
return 0;
}
|
Class1.h:#ifndef CLASS1_H
#define CLASS1_H
//Iniciar seção para o arquivo Class1.h
#include Class2.h
//Encerrar seção para o arquivo Class1.h
class Class1:public Class2
{
//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(int parameter1);
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation2();
}; //encerrar Classe Class1
#endif
Class1.cpp:
#include "Class1.h"
//Iniciar seção para o arquivo Class1.cpp
//TAREFA A FAZER: Incluir definições preservadas
//Encerrar seção para o arquivo Class1.cpp
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1(int parameter1)
{
int j = 1;
return j;
}
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation2()
{
int i = 2;
return i;
}
|
Class1.h:#ifndef CLASS1_H
#define CLASS1_H
//Iniciar seção para o arquivo Class1.h
#include Class2.h
//Encerrar seção para o arquivo Class1.h
class Class1:public Class2
{
//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
Class1.cpp:
#include "Class1.h"
//Iniciar seção para o arquivo Class1.cpp
//TAREFA A FAZER: Incluir definições preservadas
//Encerrar seção para o arquivo Class1.cpp
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1()
{
//TAREFA A FAZER Stub de método gerado automaticamente
return 0;
}
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation2()
{
int i = 2;
return I;
}
|
| Saída da Transformação | Local e Uso das Seções Definidas pelo Usuário |
|---|---|
| Arquivos de cabeçalho e arquivos de corpo | A transformação inclui uma seção definida pelo usuário
no início de cada um desses arquivos. Você pode utilizar essa seção para especificar
os seguintes tipos de instruções:
|
| Classes, uniões, estruturas, enumerações | Você pode utilizar essas seções definidas pelo usuário para especificar atributos, operações, ou ambos, que não podem ser modelados em UML. Por exemplo, você pode especificar atributos de ponteiro de função, tais como os atributos int myFunction(int* myOtherFunction) em uma seção definida pelo usuário. |
Embora a tag @generated e as seções definidas pelo usuário ofereçam flexibilidade, para evitar possíveis problemas, você deve fazer alterações estruturais no modelo UML de origem em vez do código gerado. Também é possível executar a transformação reversa para incluir novos métodos ou atributos no modelo UML de origem.
| Elemento de Modelo UML | Código Gerado | Atributo Incluído Fora de uma Seção Definida pelo Usuário | Atributo Incluído em uma Seção Definida pelo Usuário |
|---|---|---|---|
![]() |
Class1.h:
#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
//@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();
}; //encerrar Classe Class1
#endif
Class1.cpp:
#include "Class1.h"
//Iniciar seção para o arquivo Class1.cpp
//TAREFA A FAZER: Incluir definições preservadas
//Encerrar seção para o arquivo Class1.cpp
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1()
{
//TAREFA A FAZER Stub de método gerado automaticamente
return 0;
}
|
Class1.h:
#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
//@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;
bool attribute2;
public:
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Operation1();
}; //encerrar Classe Class1
#endif
Class1.cpp:
#include "Class1.h"
//Iniciar seção para o arquivo Class1.cpp
//TAREFA A FAZER: Incluir definições preservadas
//Encerrar seção para o arquivo Class1.cpp
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1()
{
//TAREFA A FAZER Stub de método gerado automaticamente
return 0;
}
|
Class1.h:
#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
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
class Class1
{
//Iniciar seção para Class1
bool attribute2;
//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();
}; //encerrar Classe Class1
#endif
Class1.cpp:
#include "Class1.h"
//Iniciar seção para o arquivo Class1.cpp
//TAREFA A FAZER: Incluir definições preservadas
//Encerrar seção para o arquivo Class1.cpp
//@generated "UML para C++ (com.ibm.xtools.transform.uml2.cpp.CPPTransformation)"
int Class1::Operation1()
{
//TAREFA A FAZER Stub de método gerado automaticamente
return 0;
}
|