A transformação de UML para Java transforma as especificações UML 2.0 em classes
Java. É possível utilizar a transformação para iniciar um projeto Java a partir
das especificações de UML 2.0. Também é possível aplicar a transformação depois
da inicialização para mesclar os modelos UML atualizados com o código Java existente.
O seguinte procedimento mostra a utilização mais simples da transformação Java.
Para transformar um modelo UML em Java:
1. Alterne para a perspectiva Modelagem.
2. Na visualização Explorador de Modelos, clique com o botão direito do mouse em uma classe UML (por exemplo,
Class1).
3. Clique em Transformar > Executar Transformação > UML2 em Java.
4. A caixa de diálogo Executar Transformação é aberta. Clique no botão Criar Conteiner
de Destino.
5. O diálogo Novo Projeto Java é aberto. Digite simples
no campo Nome do Projeto e clique em Concluir.
6. Na caixa de diálogo Executar Transformação, clique em Concluir.
O novo projeto Java contém um pacote padrão que contém a nova classe Java: Class1.
A transformação também pode executar várias outras funções, mais complexas,
como substituir nomes sem modificar o modelo de origem, substituindo o objeto
UML com uma visualização, mesclando alterações no modelo UML e na origem Java
e validando o modelo UML para potenciais problemas de transformação.
UML | Java |
Pacote | Pacote Java com o mesmo nome* |
Pacote estereotipado como <<perspectiva>> | Ignorado |
Pacote com a palavra-chave <<Análise>> ou <<análise>> | Ignorado |
Classe | Classe Java com o mesmo nome* e visibilidade |
(Classe) isLeaf propriedade | A classe Java é "final" se for true |
(Classe) isAbstract propriedade | A classe Java é "abstract" se for true |
(Classe) Generalização | A classe Java "estende" a superclasse especificada |
Implementação | A classe Java "implementa" a interface especificada |
(Classe para Interface) Realização |
A classe Java "implementa" a interface especificada |
Interface | Interface Java com o mesmo nome* e visibilidade |
(Interface) Generalização | A interface Java "estende" a interface especificada |
Enumeração |
Interface Java com o mesmo nome*
e visibilidade |
EnumerationLiteral |
O campo Java com o mesmo nome* e visibilidade |
Operação | Método Java com o mesmo nome* e visibilidade |
(Operação) isStatic propriedade | O método Java é "static" se for true |
(Operação) propriedade isAbstract | O método Java é "abstract" se for true |
(Operação) propriedade isLeaf | O método Java é "final" se for true |
(Operação) como o mesmo nome de sua classe | Construtor Java |
(Operação) estereotipada <<criar>> | Construtor Java |
Parâmetro | Parâmetro Java com o mesmo nome* |
(Parâmetro) Digitar propriedade | O parâmetro Java tem o tipo especificado que pode ser outra classe ou um tipo primitivo |
(Parâmetro) Propriedade de direção | O método Java tem o tipo "retornar <param>" se configurado para "retornar"; caso contrário, inclui o "tipo de <param> <nome de param>" para a assinatura do método |
(Parâmetro) Propriedade de multiplicidade | Consulte a seguinte tabela que contém informações sobre multiplicidade |
Propriedade | O campo Java com o mesmo nome* e visibilidade |
(Propriedade) propriedade isStatic | O campo Java é "static" se for true |
(Propriedade) propriedade isLeaf | O campo Java é "final" se for true |
(Propriedade) Digitar propriedade | O campo Java tem o tipo especificado que pode ser outra classe ou um tipo primitivo |
(Propriedade) Propriedade de multiplicidade | Consulte a seguinte tabela que contém informações sobre multiplicidade |
* Alguns caracteres não são válidos nos identificadores Java (como um espaço). A transformação Java substitui automaticamente os caracteres inválidos com um underscore (_) para criar um identificador válido. Esta substituição pode causar conflitos de nome que evitam que a transformação gere classes e interfaces duplicadas. É possível utilizar o recurso de validação para detectar esses problemas. Para evitar esses problemas de substituição, renomeie os elementos ou utilize o recurso de mapeamento para especificar um nome alternativo que não modifica o modelo de origem.
Tipos java para propriedades e parâmetros
Multiplicidade UML | Tipo Java Gerado |
0..1 | Atributo, ponteiro ou referência (por exemplo, String) |
1 | Atributo (por exemplo, String) |
N (N > 1) | Matriz (por exemplo, String[]) |
1..*, * ou x..y | Coleta, consulte a seguinte tabela |
Coletas Java para 1..*, * ou multiplicidades x..y
Propriedade isOrdered | Propriedade isUnique | Coleta
UML |
Tipo Java Gerado |
Verdadeiro | Verdadeiro | Configurar Pedido |
java.util.SortedSet |
Verdadeiro | Falso | Seqüência |
java.util.List |
Falso | Verdadeiro | Conjunto |
java.util.Set |
Falso | Falso | Pacote |
java.util.Collection |
Avançado
A guia Avançado fornece
algumas opções de geração de códigos. Clique em Modelagem > Transformar
> Configurar
Transformações, selecione uma configuração UML em Java e selecione a guia
Avançado . A guia contém a
caixa de opções Gerar
getters e definidores e o grupo Coletas .
Quando Gerar getters e definidores
estiver selecionada, a transformação gerará um campo
privado com métodos de getter e definidor para cada propriedade UML.
Se isLeaf (final) ou isReadOnly da propriedade
estiverem configurados como verdadeiro, nenhum definidor
é gerado. Se o isDerived da propriedade for verdadeiro, a implementação de definidor
será vazia.
Você pode especificar as coletas geradas pela transformação UML em Java
no grupo Coletas .
Por exemplo, selecione "java.util.Vector" a partir do drop-downSeqüência
e a transformação gerará vetores ao invés
de listas. Você também pode especificar classes de coleta customizadas, digitando
o nome da classe no drop-down. Se você digitar "custom.Bag"
no drop-down Pacote , a
transformação gerará pacotes ao invés de coletas.
Ao clicar em Criar Modelo de Mapeamento, a transformação Java
cria um modelo de mapeamento que é um modelo separado que tem um artefato para
cada elemento transformável. O artefato se refere a tem o mesmo nome do elemento
transformável original. Para especificar um nome alternativo para o elemento
original, digite um novo nome na propriedade do nome do arquivo do artefato. Se você não alterar a propriedade do nome do arquivo do artefato, a transformação gera o elemento com o nome padrão do artefato.
Se você especificar nomes alternativos para os pacotes, os nomes alternativos afetam
todos os classificadores nesse pacote (a menos que o classificador especifique um nome
completo). A seguinte tabela lista exemplos de nomes alternativos.
Origem UML | Nome do arquivo do artefato de mapeamento | Java Gerado |
"Package1" | "" | "Package1" |
"Package2" | "com.ibm.test" | "com.ibm.test" |
"Class1" em Package1 | "" | Package1.Class1 |
"Interface1" em Package2 | "ITestable" | com.ibm.test.ITestable |
"Class2" em Package2 | "com.ibm.test.Testable" | com.ibm.test.Testable |
Para utilizar um modelo de mapeamento, complete as seguintes etapas:
1. Alterne para a perspectiva Modelagem.
2. Na visualização Explorador de Modelos, clique em um modelo UML.
3. Na barra de menu, clique em Modelagem > Transformar > Configurar
Transformações.
4. Crie uma nova Transformação UML2 para Java (por exemplo, nomeie a transformação
Utilizar mapeamento.)
5. Na página Mapeamento, clique em Utilizar Modelo de Mapeamento.
6. Clique no modelo de mapeamento criado anteriormente e clique em Executar.
Quando a transformação é executada, utiliza nomes alternativos especificados
no modelo de mapeamento.