Página principal

Gerando Código Esqueleto com dia2code

From CInLUG

O Dia é um programa para desenhar diagramas de vários tipos, incluindo UML, que é o que nos interessa neste tutorial. Para instalar no Debian/Ubuntu o pacote a ser instalado é o dia-gnome se estiver no GNOME, ou apenas dia para outros ambientes. Instale também o dia2code, que é o motivo do tutorial.

Conteúdo

dia2code

dia2code parseia arquivos de diagramas UML gerados pelo Dia e gera código equivalente para C, C++, Java, Ada, PHP, Python, Shapefile (nem me perguntem, estou sem internet enquanto escrevo isso) e SQL, outras linguagens também são suportadas, mas estas são as principais.

Modelo UML no Dia

Para tirar proveito deste tutorial você já deve ter alguma noção de UML. Se não tiver, não há problema algum; criar diagramas no Dia e gerar código esqueleto para sua linguagem preferida pode ser uma boa forma de aprender. Claro que é esperado que você saiba usar o Dia, caso contrário veja Dia Tutorial e What is Dia?; para UML: A UML tutorial.

Carro

Criamos uma classe Carro com seus atributos e operações como os da imagem a seguir, em seguida criamos uma classe CarroDeLuxo que extende a classe Carro através de herança.

Imagem:Carro-uml-dia.png

Um arquivo dia se encontra anexado ao final deste tutorial, ao baixar mude a extensão de .dia.txt para .dia.

Gerando Código

Vamos gerar código para Java, PHP e Python, as outras linguagens ficam por sua conta.

Java

$ dia2code carro_uml.dia -t java

Carro.java:

  1. public class Carro {
  2. /** Attributes */
  3. public String modelo;
  4. public int ano;
  5. public int placa = 0;
  6. /**
  7. * Operation
  8. *
  9. */
  10. public void dirigir ( ) {
  11. }
  12. }
  13.  

CarroDeLuxo.java:

  1. import Carro;
  2. public class CarroDeLuxo extends Carro {
  3. /** Attributes */
  4. public String acessorios;
  5. }
  6.  

PHP

$ dia2code carro_uml.dia -t php

Carro.class.php:

  1. <?php
  2. /**
  3. * XXX detailed description
  4. *
  5. * @author XXX
  6. * @copyright XXX
  7. */
  8. class Carro {
  9. // Attributes
  10. /**
  11. * XXX
  12. * @access public
  13. */
  14. var $modelo;
  15.  
  16. /**
  17. * XXX
  18. * @access public
  19. */
  20. var $ano;
  21.  
  22. /**
  23. * XXX
  24. * @access public
  25. */
  26. var $placa = 0;
  27.  
  28. // Associations
  29. // Operations
  30. /**
  31. * XXX
  32. *
  33. * @access public
  34. * @returns void
  35. */
  36. function dirigir ( ){
  37. }
  38. }
  39. ?>
  40.  

CarroDeLuxo.class.php:

  1. <?php
  2. #include( "Carro.class.php" );
  3. include( "Carro.class.php" );
  4. /**
  5. * XXX detailed description
  6. *
  7. * @author XXX
  8. * @copyright XXX
  9. */
  10. class CarroDeLuxo extends Carro {
  11. // Attributes
  12. /**
  13. * XXX
  14. * @access public
  15. */
  16. var $acessorios;
  17.  
  18. // Associations
  19. // Operations
  20. }
  21. ?>
  22.  

Python

Carro.py:

  1. class Carro:
  2. """Class Carro
  3. """
  4. # Attributes:
  5. modelo = None # (String)
  6. ano = None # (int)
  7. placa = 0 # (int)
  8.  
  9. # Operations
  10. def dirigir(self):
  11. """function dirigir
  12.  
  13. returns void
  14. """
  15. return None # should raise NotImplementedError()
  16.  

CarroDeLuxo.py:

  1. from Carro import Carro
  2.  
  3. class CarroDeLuxo(Carro):
  4. """Class CarroDeLuxo
  5. """
  6. # Attributes:
  7. acessorios = None # (String)
  8.  
  9. # Operations
  10.  

Conclusão

Mais informações sobre o dia2code no site deles. E não esqueça: você não vai perder seu emprego, é apenas código esqueleto, e produzir código esqueleto é para autômatos!

Imagem:monkey.png


Autor: Marcelo Lira

Imagem:Cc-small.png : Imagem:Cc-by.png Imagem:Cc-sa.png
Atribuição-Compatilhamento pela mesma licença 2.5

Ferramentas pessoais
Vistas