Se a configuração de transformação implementar o Design Contract Management Protocol (DCMP) de Modelagem Reconciliada, você deverá especificar os elementos de origem e destino válidos para as transformações UML-para-Java e Java em UML.
A transformação transforma o conteúdo de modelos, pacotes, classes e interfaces UML. Por exemplo, ao transformar uma classe, a transformação também transforma as operações e propriedades da classe.
Se você selecionar um modelo ou elementos de modelo na visualização Explorador de Projetos em vez de utilizar o editor de Configuração de Transformação, o modelo ou elementos selecionados substituirão o modelo ou elementos de origem especificados na configuração de transformação. A configuração de transformação não é afetada e a origem especificada na página Origem e Destino do editor de configuração de transformação ou no assistente de Nova Configuração de Transformação não é alterada.
Você pode especificar um projeto Java, ou uma pasta de origem em um projeto Java, como o destino para a saída da transformação UML-para-Java.
É possível criar um modelo de mapeamento para especificar nomes alternativos para os elementos gerados pela transformação, sem modificar o modelo de origem. Você poderá especificar nomes alternativos se desejar incluir detalhes específicos do Java, como restrições de nomenclatura em modelos independentes da plataforma, ou se a organização lógica do modelo de origem não for apropriada como pacote de destino.
Você pode especificar um nome qualificado, como com.ibm.NewName, ou um nome não qualificado, como NewName. A especificação de nomes alternativos para pacotes afeta todos os classificadores nesse pacote, a menos que o classificador especifique um nome completo. Também é possível especificar locais alternativos no mesmo projeto para os elementos gerados pela transformação.
É possível ativar a geração de enumerações Java que preservam o nome e os valores dos literais de enumeração como cadeias recuperáveis. Para ativar essa funcionalidade, selecione a UML para a Extensão de Enumeração Customizada do Java quando configurar uma transformação.
Se você aplicar a biblioteca de modelos de Tipos XSD a um modelo UML, quando executar a transformação UML-para-Java, os tipos de dados XSD serão transformados em nomes qualificados Java correspondentes. Para obter informações detalhadas de mapeamento, consulte o tópico de referência a seguir.
A transformação não gera informações de tipos parametrizados para outras coletas Java.
Se você não configurar a transformação para gerar código compatível com o J2SE 5.0, a transformação UML-para-Java incluirá comentários sobre tipos de coleta UML nos tipos de coleta Java gerados por ela. Esses comentários possibilitam que as ferramentas de desenvolvimento visual criem representações visuais exatas dos tipos de coleta Java.
Se você especificar uma multiplicidade de * em um atributo UML e não alterar as informações de coleta Java na configuração de transformação, por padrão, a transformação UML-para-Java gerará um conjunto Java.
| Elementos UML | Saída da Transformação UML-para-Java | Representação Visual da Saída da Transformação |
|---|---|---|
![]() |
A transformação gerará o seguinte código-fonte
se você desmarcar a caixa de opção Utilizar Java 5 na configuração
de transformação:public class Class1 {
/**
* <!-- iniciar-doc-UML -->
* <!-- encerrar-doc-UML -->
* @uml.annotations para <code>class2</code>
* collection_type="Package1.Class2"
* @generated "UML para Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
*/
private Set class2;
}
|
![]() |
A transformação gerará o seguinte código-fonte
se você selecionar a caixa de opção Utilizar Java 5 na configuração
de transformação:public class Class1 {
/**
* <!-- iniciar-doc-UML -->
* <!-- encerrar-doc-UML -->
* @generated "UML para Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
*/
private Set<Class2> class2;
}
|
A seguinte imagem mostra a representação visual da classe UML gerada pela transformação Java em UML:

/* * <!-- iniciar-doc-UML --> * <!-- encerrar-doc-UML --> */
A transformação inclui a documentação para relacionamentos de generalização, implementação e realização com a documentação UML para a classe de origem em cada relacionamento. A transformação também inclui a documentação para esses relacionamentos com as informações Javadoc para a classe de destino gerada de cada relacionamento.
Para associações, a transformação inclui a documentação UML para a documentação de cada propriedade associada.
Os modelos UML não podem representar várias palavras-chave Java, tais como strictfp, native, transient e volatile. Para preservar essas palavras-chave ao executar a transformação UML-para-Java, você deve modelar essas palavras-chave como palavras-chave UML.
Se desejar que a saída da transformação UML-para-Java seja o artefato de engenharia primário, você poderá especificar que a transformação implemente o Design Contract Management Protocol (DCMP) conhecido como Modelagem Combinada. Especificando esse DCMP, a transformação cria um relacionamento diferente entre os objetos UML de origem e o código Java gerado. A criação de relacionamentos diretos exclui os objetos UML de origem e os substitui pelas representações visuais dos objetos de origem.
Se a transformação não puder transformar elementos UML, tais como elementos aninhados, ela moverá esses elementos para o pacote mais próximo. Se a transformação não puder mover um elemento de modelo para o pacote mais próximo, ela excluirá o elemento.
Para evitar possíveis problemas, você deve colocar o modelo de origem sob o controle de versão.
Você pode utilizar a transformação UML-para-Java para criar relacionamentos de rastreio dos elementos de modelo de origem UML com as classes Java geradas. 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.
Quando você reexecutar a transformação, se necessário, a transformação utilizará o identificador no código-fonte para combinar os elementos correspondentes e, em seguida, alterará o código para refletir as alterações no modelo. Por exemplo, se você renomear uma operação UML no modelo de origem e reexecutar a transformação, a transformação renomeará o método Java gerado anteriormente e preservará o corpo do método, em vez de excluir o método gerado anteriormente e incluir um novo método.
A transformação Java–para-UML, ou reversa, também pode utilizar os identificadores para combinar elementos correspondentes entre o projeto Java e o modelo UML. Se aplicáveis, as alterações nos elementos do código-fonte Java serão tratadas como modificações ou como refatoração de código em vez de inclusões e exclusões no código gerado.
| Elemento UML | Saída da Transformação | Relacionamento de Rastreio em um Diagrama de Classes |
|---|---|---|
![]() |
/**
*
*/
package Package1;
import java.util.Collection;
/**
* <!-- iniciar-doc-UML -->
* <!-- encerrar-doc-UML -->
* @uml.annotations
* derived_abstraction="platform:/resource/UMLProject/Model.emx#_9YlH8CpPEdyn7_VFIWTp4A"
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#_9YlH8CpPEdyn7_VFIWTp4A"
*/
public class Class1 {
/**
* <!-- iniciar-doc-UML -->
* <!-- encerrar-doc-UML -->
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g"
*/
private Integer attribute1;
/**
* @return the attribute1
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g?GETTER"
*/
public Integer getAttribute1() {
// iniciar-código-do-usuário
return attribute1;
// encerrar-código-do-usuário
}
/**
* @param theAttribute1 o attribute1 a ser configurado
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#__8ptgOSnEdyXH8PWExuX2g?SETTER"
*/
public void setAttribute1(Integer theAttribute1) {
// iniciar-código-do-usuário
attribute1 = theAttribute1;
// encerrar-código-do-usuário
}
/**
* <!-- iniciar-doc-UML -->
* <!-- encerrar-doc-UML -->
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#_RDsjcOSnEdyXH8PWExuX2g"
*/
public void Operation1() {
// iniciar-código-do-usuário
// TAREFA A FAZER Stub de método gerado automaticamente
// encerrar-código-do-usuário
}
/**
* <!-- iniciar-doc-UML -->
* <!-- encerrar-doc-UML -->
* @generated "sourceid:platform:/resource/UMLProject/Model.emx#_R04v0OSnEdyXH8PWExuX2g"
*/
public void Operation2() {
// iniciar-código-do-usuário
// TAREFA A FAZER Stub de método gerado automaticamente
// encerrar-código-do-usuário
}
}
|
![]() |
A transformação não altera o modelo de origem quando você especifica para a transformação gerar relacionamentos de rastreio.
Quando você executa uma transformação que está configurada para criar relacionamentos de rastreio, para cada elemento que suporta a tag @generated, a transformação anexa um identificador exclusivo à tag @generated. Esse identificador especifica o elemento de modelo UML a partir do qual o elemento Java foi gerado, como neste exemplo: * @generated "sourceid:platform:/resource/UMLProject/SimpleModel.emx#_83GpoBtIEdyLaOwyRX_ZMQ". Se você renomear os elementos no modelo UML de origem, esse identificador exclusivo ativará a funcionalidade de mesclagem para refatorar e mesclar os elementos apropriados.
A transformação Java–para-UML, ou reversa, também pode utilizar os identificadores para combinar elementos correspondentes entre o projeto Java e o modelo UML. Se aplicáveis, as alterações nos elementos do código-fonte Java serão tratadas como modificações ou como refatoração de código em vez de inclusões e exclusões no código gerado.
A UML-para-Java 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.