Boas práticas de programação com Object Calisthenics
Eclipse uml
1. Grupo de Usuários Java
http://www.guj.com.br
Omondo EclipseUML
Ricardo Rodrigues Lecheta
Aprenda como instalar o plugin EclipseUML no Eclipse e como utilizá-lo para fazer engenharia
reversa de seu código-fonte.
Introdução
Neste tutorial será apresentado o Omondo EclipseUML, um plugin para o Eclipse que auxilia a
construção de diagramas UML. Com este plugin é possível criar diagramas de classe,
seqüência, estados, use cases, atividades, etc. Alterações no diagrama automaticamente se
refletem no código-fonte e vice-versa. Outro recurso interessante é a capacidade de fazer
Engenharia Reversa.
Dependências
Antes de instalar o EclipseUML, é necessário instalar os seguintes plugins:
• Draw2D: utilizado para a construção de componentes gráficos com SWT;
• GEF (Graphical Editing Framework): permite criar um rico editor gráfico a partir de seu modelo. O
GEF utiliza o Draw2D para renderizar os componentes gráficos;
• EMF (Eclipse Modeling Framework): Framework de modelagem e geração de código a partir de
um modelo.
Fazendo o Download
Para instalar o plugin EclipseUML faça os seguintes downloads:
• Eclipse 2.1.3:
o http://download.eclipse.org/downloads/drops/R-2.1.3-200403101828/index.php
o http://download.eclipse.org/downloads/drops/R-2.1.3-200403101828/eclipse-SDK-
2.1.3-win32.zip
• EMF 1.1.1.1 :
o http://dev.eclipse.org/viewcvs/indextools.cgi/~checkout~/emf-
home/downloads/dl.html
o http://download.eclipse.org/tools/downloads/emf/emf_1.1.1_20031120_1149WL.zi
p
• EclipseUML:
o http://www.omondo.com/download/free/index.jsp
o http://www.omondo.com/servlet/download?download=eclipseuml_1.2.1/eclipseuml
_1.2.1.20030806.zip
O Draw2D e GEF estão incluídos na distribuição do EclipseUML
Note que não é necessário fazer o download do Draw2D e do GEF porque uma versão
compatível já está incluída na instalação do plugin EclipseUML.
Compatibilidade entre as versões do Eclipse e EMF
Ao instalar o EclipseUML e o EMF, certifique-se que estes sejam versões compatíveis
com o Eclipse instalado. http://dev.eclipse.org/viewcvs/indextools.cgi/~checkout~/emf-
home/downloads/dl.html
Grupo de Usuários Java – http://www.guj.com.br – Página 1
2. Grupo de Usuários Java
http://www.guj.com.br
Instalação
Para instalar o EMF e o EclipseUML descompacte os arquivos de instalação no diretório onde o Eclipse
está instalado.
Após isto, abra o Eclipse, uma janela irá aparecer pedindo para concluir a instalação, clique em finish
para reiniciar. Caso esta janela não apareça, entre em ‘Help -> Software Updates -> Pending Changes”.
1. Pending Changes
Para testar se a instalação foi realizada com sucesso, entre em “Help-> About Eclipse Platform-> Plug-
in Details” e verifique as seguintes entradas:
Provider Plugin name
Eclipse.org Draw2d
Eclipse.org Graphical Editing Framework (GEF)
Eclipse.org Eclipse Modeling Framework (EMF)
Omondo Eclipse UML Plugin
Para concluir, abra o menu “File -> New -> Other -> UML Diagrams”. Se estes wizards aparecerem
indica que o Omondo EclipseUML foi instalado corretamente. Caso isto não aconteça, verifique se as
versões do EMF e do Omondo EclipseUML são compatíveis com a versão do Eclipse.
2. Wizards do EclipseUML
Grupo de Usuários Java – http://www.guj.com.br – Página 2
3. Grupo de Usuários Java
http://www.guj.com.br
Criando um Diagrama de Classes
Neste tutorial vamos criar um diagrama de classes bem simples para demonstrar o plugin.
Crie um “Java Project”, um “source folder” e um pacote “ br.com.guj.automovel”.
Crie um diagrama de classes utilizando o wizard da figura 2 e selecione o pacote
“br.com.guj.automovel” criado no passo anterior. Para concluir clique em Finish. Após alguns instantes,
um editor aparecerá para que se possa construir o diagrama de classes.
Na barra de ferramentas do editor, clique no ícone “Create an interface” e logo em seguida clique
no editor. Um wizard irá perguntar o nome da Interface, coloque Automovel. O resultado é mostrado na
figura abaixo.
3. Criação da interface Automovel
Note que o plugin criou automaticamente o código da interface “Automovel” no pacote
“br.com.guj.automovel” do seu Projeto.
Alterações no Diagrama refletem no código-fonte
As alterações realizadas nos diagramas irão se refletir no código -fonte e vice-versa.
Cuidado ao apagar uma classe do diagrama, pois a classe também será excluída do
projeto no Eclipse. Caso queira esconder uma classe no diagrama, clique com o botão
direito e selecione “Hide”.
Agora vamos adicionar dois métodos nesta interface, os métodos “acelerar” e “freiar”. Para isso clique
com o botão direito em cima da interface Automovel, New -> Method. No campo “name” coloque o
nome do seu método, neste caso “acelerar”. Clique em OK. Veja que a alteração foi refletida no código
fonte (Automovel.java).
Repita o processo anterior e adicione o método “ freiar” na interface Automovel. Após isso sua
interface vai ser semelhante ao mostrado na figura abaixo:
4. Adicionando métodos na interface Automovel
Grupo de Usuários Java – http://www.guj.com.br – Página 3
4. Grupo de Usuários Java
http://www.guj.com.br
Agora vamos criar uma classe que implementa esta interface. Para isso, clique no ícone “Create a class”
. Coloque o nome como Chevrolet e clique em Finish. Feito isso, selecione o ícone “Generalization”
, clique em “Chevrolet” e logo depois em “Automovel”. O resultado será a imagem abaixo:
5. Classe Chevrolet
Observe que o código-fonte da classe Chevrolet foi automaticamente modificado para implementar a
interface Automovel.
package br.com.guj.automovel;
public class Chevrolet implements Automovel {
}
Agora vamos criar outra classe que implementa a interface Automovel. Para isso, repita o processo
anterior e crie uma classe Fiat. Porém ao invés de utilizar o diagrama para informar que Fiat implementa
Automovel, edite o código-fonte conforme mostrado abaixo.
package br.com.guj.automovel;
public class Fiat implements Automovel {
}
Note que no diagrama ainda não foi representado que “Fiat” implementa “Automovel” (figura 6). Para
isso, clique com o botão direito em “Fiat” -> Inheritance -> Insert supertype -> Automovel. Feito isso,
o Eclipse irá desenhar a hierarquia de seu diagrama conforme a figura 7.
6. Classe Fiat 7. Inheritance
Grupo de Usuários Java – http://www.guj.com.br – Página 4
5. Grupo de Usuários Java
http://www.guj.com.br
Continuando o exemplo, vamos adicionar mais duas classes na hierarquia conforme a figura abaixo.
8. Diagrama de Classes
Para este diagrama o Eclipse terá gerado automaticamente o código-fonte abaixo:
package br.com.guj.automovel;
public interface Automovel {
}
package br.com.guj.automovel;
public class Chevrolet implements Automovel {
}
package br.com.guj.automovel;
public class Fiat implements Automovel {
}
package br.com.guj.automovel;
public class Uno extends Fiat {
}
package br.com.guj.automovel;
public class Ipanema extends Chevrolet {
}
Configurar o layout do diagrama de classes automaticamente
Um recurso interessante é que o plugin pode configurar o layout do diagrama
automaticamente. Para isso entre no menu Inheritance -> Layout Inheritance.
Grupo de Usuários Java – http://www.guj.com.br – Página 5
6. Grupo de Usuários Java
http://www.guj.com.br
Agora vamos fazer uma alteração no código-fonte de uma das classes. Em Ipanema.java adicione um
atributo “placa” do tipo String e salve o código.
package br.com.guj.automovel;
public class Ipanema extends Chevrolet {
private String placa;
}
Observe que as alterações não refletiram no diagrama. Agora clique com o botão direito no diagrama
em cima da classe Ipanema e entre em -> View Selector. Neste wizard é possível selecionar quais
atributos e métodos devem ser exibidos no diagrama. Agora clique na guia “Attributes ”, selecione o
atributo placa e clique em OK. Agora o seu diagrama irá se parecer com a figura abaixo:
9. View Selector
10. Diagrama de Classes
Para alterar o seu código-fonte e visualizar as modificações no diagrama automaticamente, é possível
configurar nas preferências do Eclipse os atributos e métodos que o EclipseUML mostrará por padrão.
11. Widow Preferences
Grupo de Usuários Java – http://www.guj.com.br – Página 6
7. Grupo de Usuários Java
http://www.guj.com.br
Engenharia Reversa com o ElipseUML
O que fizemos até agora foi utilizar o EclipseUML para gerar um diagrama de classes e a partir disto
gerar o código-fonte. O contrário, gerar o diagrama a partir de código fonte, é chamado de Engenharia
Reversa.
Para fazer um simples teste, experimente criar uma outra classe através do método tradicional. Ao
terminar, clique na classe e arraste com o mouse até o editor e solte. Veja que o EclipseUML adicionou
automaticamente sua classe ao diagrama.
Para testar a engenharia reversa do EclipseUML, faça o download do material que acompanha o
tutorial.
Feito isso importe o arquivo animal.jar no “source folder” do seu projeto. Ao importar o arquivo, a
seguinte estrutura foi criada em seu projeto:
12. br.com.guj.animal
Agora para fazer engenharia reversa a partir do código-fonte importado, clique com o botão direito
do mouse no pacote “br.com.guj.animal” -> New -> Other -> UML Diagrams -> UML Class Diagram e
clique em Finish.
Uma tela vai aparecer como mostrado na figura 13, solicitando quais interfaces e classes devem
aparecer no diagrama, então faça a seleção e clique em OK. O EclipseUML acabou de fazer Engenharia
Reversa do diagrama de classes que acabamos de criar.
13. Wizard Class Diagram
Após clicar em OK, o diagrama de classes irá abrir no editor conforme a figura abaixo:
Grupo de Usuários Java – http://www.guj.com.br – Página 7
8. Grupo de Usuários Java
http://www.guj.com.br
14. Engenharia Reversa
Outras funcionalidades
É possível configurar o tipo do diagrama a ser exibido. Entre em Window -> Preferences -> UML.
Você possui três opções: Eclipse (default), Omondo e UML Standard. Na figura abaixo podemos
ver o diagrama utilizando os padrões Omondo e UML Standard:
Grupo de Usuários Java – http://www.guj.com.br – Página 8
9. Grupo de Usuários Java
http://www.guj.com.br
UML Standard Omondo
15. UML Standard 16. Omondo
Quando o diagrama estiver concluído, é possível exportá -lo para outros formatos. Faça isso clicando com
o botão direito no editor em Export -> JPEG conforme a figura abaixo.
17. Exportando uma imagem para JPEG
Conclusão
Este tutorial mostrou como instalar o plugin EclipseUML no Eclipse. Foi abordada a criação de um
diagrama de classes e posteriormente como fazer engenharia reversa a partir do código-fonte. Agora é
questão de explorar as funcionalidades do plugin para começar a trabalhar.
Ricardo Lecheta (ricardolecheta@terra.com.br), formado em Ciência da Computação pela PUCPR, possui certificação
em Java, e atualmente trabalha desenvolvendo soluções sobre com a tecnologia Java/WebSphere.
Grupo de Usuários Java – http://www.guj.com.br – Página 9