|
|
Jude com POPFrom COREPHPCom a biblioteca POP pode-se deixar de lado todas as questões de CRUD e criação de banco de dados, permitindo total autonomia ao analista em relação ao DBA. Uma das melhores ferramentas disponíveis para modelagem é a Jude, que nos permite modelar todas nossas classes em UML e posteriormente exportar o código para Java. Posteriormente à exportação, é possível modificar os objetos em Java para PHP sem maiores dificuldades, bastando para isso observar as regras básicas de criação de objetos POP. Para isto, utilizaremos o mesmo exemplo dado para a biblioteca POP. Este gráfico visualizado aqui foi gerado pelo próprio Jude, utilizando o menu "Tool" >> "Export Image" >> "Save Diagram as PNG". No mesmo menu "Tool", temos a opção "Export Java" que é a que utilizaremos agora. Ao exportarmos todas nossas classes para Java, temos os serguintes arquivos gerados: Pessoa.java, PessoaFisica.java e Telefone.java. Nossa primeira tarefa é renomear todos os arquivos para .php, assim teremos Pessoa.php, PessoaFisica.php e Telefone.php. Agora iremos abrir o primeiro documento, Pessoa.php, com nosso editor PHP favorito. Como resultado teremos a seguinte declaração Java: public class Pessoa
{
protected char nome;
protected Telefone[] telefone;
}
Para converter este código para PHP, e mais especificamente, a declaração de uma classe POP, várias alterações serão feitas. A primeira delas é colocar os marcadores de tag PHP <? e ?>. Após isto feito devemos remover a declaração de visibilidade da classe PHP e definí-la como uma classe extendida da classe Persist da biblioteca POP. Posteriormente, mudamos todos os atributos para protected e retiramos a tipagem do java deles e acrescentamos o $ à frente do nome das variáveis. Retiramos também a tipagem que define a classe que poderá estar lá dentro. E por último declaramos o constructor para permitir o controle de tipagem pela POP, lembrando que ao final de sua declaração, o construtor da classe parent também deve ser chamado para herdar a tipagem. O resultado final será: <?
class Pessoa extends Persist
{
protected $nome;
protected $telefone;
public function __construct()
{
$this->nome = new PVarchar();
$this->telefone = new PArrayOf("Telefone");
parent::__construct();
}
}
?>
O objeto PessoaFisica não é muito diferente que o objeto Pessoa, mas ainda assim, em relação ao objeto Java, apresenta uma vantagem que é a tipagem para campos de Data. Assim, o objeto original Java: public class PessoaFisica extends Pessoa
{
protected char cpf;
protected char nascimento;
}
Ficará: <?
class PessoaFisica extends Pessoa
{
protected $cpf;
protected $nascimento;
public function __construct()
{
$this->cpf = new PVarchar();
$this->nascimento = new PDate();
parent::__construct();
}
}
?>
Agora, o objeto Telefone já é um caso um pouco mais complexo. Note que na declaração ele é associado ao objeto Pessoa, e depende deste para existir. Assim, ele terá um atributo que o atrelará ao objeto Pessoa, que fará referência ao id do mesmo no banco de dados. Também é preciso declarar a classe pai que a contém no atributo array parent_classes. Telefone só existe porque Pessoa que tem Telefone(s) existe. A regra para declaração de associação para as filhas, pede que seja declarado um atributo do tipo inteiro com o nome id + _ + nome da classe pai. Então o objeto Telefone terá, obrigatoriamente, um atributo id_pessoa do tipo inteiro. Em Java ele estará assim: public class Telefone
{
protected char numero;
protected Pessoa pessoa;
}
Em PHP o mesmo ficará assim: <?
class Telefone extends Persist
{
protected $parent_classes;
protected $id_pessoa;
protected $numero;
public function __construct()
{
$this->parent_classes = array("Pessoa");
$this->id_pessoa = new PInteger();
$this->numero = new PVarchar();
parent::__construct();
}
}
?>
E isto finaliza nossa conversão e mini tutorial de como modelar com o Jude e converter para PHP com POP |