Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Não faço ideia de como esse diagrama abaixo, seria no código php, poderiam me ajudar?
/applications/core/interface/imageproxy/imageproxy.php?img=http://imageshack.com/a/img841/1373/9y3m.png&key=a287a2169b346f94a40af5b499b1f5583a41f202af3e0a497bb585ec9e0668bb" alt="9y3m.png" />
A minha dúvida sobre associação ternária: É quando falamos de associação ternária, isso que dizer que cada classe do diagrama, terá o par de instância que estão associados das outras classes?
Veja esse outro diagrama e como seria no meu ponto de vista o código:
/applications/core/interface/imageproxy/imageproxy.php?img=http://imageshack.com/a/img69/3669/5so5.png&key=a6e36b099ca453d2ed1122b257a8d8eb4279e1c2c34a15dcf37ef30cda9ae2a6" alt="5so5.png" />
Como ficaria o código desse diagrama acima:
class Homem
{
private $nome;
private $mulher;
private $filhos = array();
public function setMulher( Mulher $mulher ) {
if ( $mulher->getParceiro ) {
throw new Exception('Esta pessoa já possui um parceiro(a)');
}
$this->mulher = $mulher->getMulher();
}
public function setFilho( Filho $filho ) {
$this->filhos[] = $filho ->getFilho();
}
/* Métodos Get */
}
class Mulher
{
private $nome;
private $homem;
private $filhos = array();
public function setHomem( Homem $homem ) {
if ( $homem->getParceiro ) {
throw new Exception('Esta pessoa já possui um parceiro(a)');
}
$this->homem = $homem->getHomem();
}
public function setFilho( Filho $filho ) {
$this->filhos[] = $filho->getFilho();
}
/* Métodos Get */
}
class Filho
{
private $nome;
private $homem;
private $mulher;
public function setPai( Homem $homem ) {
$this->homem = $homem->getHomem();
}
public function setMae( Mulher $mulher ) {
$this->mulher = $mulher->getMulher();
}
/* Métodos Get */
}
Veja que cada classe guarda a instância das outra classes.
Agora veja esse outro exemplo:
/applications/core/interface/imageproxy/imageproxy.php?img=http://imageshack.com/a/img546/3272/23jc.png&key=bd62e2d76dcf5e383c7ff480d7f2bb3e00099b3641e0c33ad0f92d170c7521f3" alt="23jc.png" />
Como ficaria no código no meu ponto de vista:
class Tecnico {
private $id;
private $nome;
/**
* Métodos Get e Set
*/
}
class Computador {
private $id;
private $modelo;
/**
* Métodos Get e Set
*/
}
class Projeto {
private $id;
private $nome;
private $verba;
/**
* Métodos Get e Set
*/
}
class Alocacao {
private $id;
private $nome;
private $Atecnico = array();
private $Acomputador = array();
private $Aprojeto = array();
public function __construct( $id, $nome ) {
$this->id = $id;
$this->nome = $nome;
}
public function setTecnico( Tecnico $tecnico ) {
$this->Atecnico[] = $tecnico;
}
public function setComputador( Computador $computador ) {
$this->Acomputador[] = $computador;
}
public function setProjeto( Projeto $projeto ) {
$this->Aprojeto[] = $projeto;
}
/**
* Métodos Get
*/
}Então qual é o mais certo a fazer em associação ternária é o primeiro ou o segundo exemplo?
Eu nunca fui lá muito bom em interpretar esses gráficos, mas vamos ver ...
A Empresa ou Aplicação pode ter um ou mais Clientes, o que eu acho errado, já que ela até pode existir sem nenhum cliente.
Um Cliente pode existir sem necessariamente ter algum Contrato e pode ter tantos quantos forem precisos.
O terceiro também acho que está errado porque ele deveria se ligar ao Contrato e não à ambos, Contrato e Cliente pois do ponto de vista da Aplicação, quem tem Regras Contratuais é o Contrato e não o Cliente, mesmo que juridicamente falando seja o contrário.
Agora, para que isso esteja em PHP, você tem alguma coisa? caso contrário moveremos para Metodologia, Modelagem e Arquitetura