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.
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:
public class Carro { /** Attributes */ public String modelo; public int ano; public int placa = 0; /** * Operation * */ public void dirigir ( ) { } }
CarroDeLuxo.java:
import Carro; public class CarroDeLuxo extends Carro { /** Attributes */ public String acessorios; }
PHP
$ dia2code carro_uml.dia -t php
Carro.class.php:
<?php /** * XXX detailed description * * @author XXX * @copyright XXX */ class Carro { // Attributes /** * XXX * @access public */ var $modelo; /** * XXX * @access public */ var $ano; /** * XXX * @access public */ var $placa = 0; // Associations // Operations /** * XXX * * @access public * @returns void */ function dirigir ( ){ } } ?>
CarroDeLuxo.class.php:
<?php #include( "Carro.class.php" ); include( "Carro.class.php" ); /** * XXX detailed description * * @author XXX * @copyright XXX */ class CarroDeLuxo extends Carro { // Attributes /** * XXX * @access public */ var $acessorios; // Associations // Operations } ?>
Python
Carro.py:
class Carro: """Class Carro """ # Attributes: modelo = None # (String) ano = None # (int) placa = 0 # (int) # Operations def dirigir(self): """function dirigir returns void """ return None # should raise NotImplementedError()
CarroDeLuxo.py:
from Carro import Carro class CarroDeLuxo(Carro): """Class CarroDeLuxo """ # Attributes: acessorios = None # (String) # Operations
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!
| Autor: Marcelo Lira |




