Relacinamento TEM UM

4 respostas
bruno_r_santana
  1. um relacionamento pode ser É UM e TEM UM ao mesmo tempo???

  2. não entendi muito bem o relacionamento TEM UM. Alguém poderia me explicar???a parte prática…na teoria entendi como funciona mas o código não entendi direito…alguém poderia citar um trecho de código e explicar suas etapas

valew pessoal

4 Respostas

ViniGodoy

O relacionamento tem um define um acoplamento entre duas classes distintas.

Por exemplo:

Um carro tem um motor.

Se definirmos a classe carro fica assim:

public class Carro { private Motor motor; }

Note que o motor é uma propriedade do carro. Se tornou um atributo privado da classe.

Agora, um Carro é um automóvel. Novamente, nossa classe carro fica assim:

public class Carro extends Automovel { private Motor motor; //Demais implementações }

Por isso, o carro é filho da classe automóvel, e é perfeitamente legal dizer:

Automovel palio = new Carro(); //O automóvel da variável palio é um carro.

Mas não é valido fazer:

Carro carro = new Motor(); //O carro tem um motor, mas não é um motor! Motor motor = new Carro(); //O motor não é um carro!

Quanto a usarmos os dois relacionamentos ao mesmo tempo. Sim, é possível. Considere a classe Diretorio:

public class Diretorio extends File { private List<File> files; //Demais implementações }

Um diretório tem uma lista de arquivos, mas por sua vez também é um arquivo!!! Note que nesse caso são dois relacionamento e não um só com dupla função.

cristianomariano

Pelo que eu entendo, no relacionamento É UM, você usaria extends ou implements, ou seja, herança. Por exemplo:

public class Animal {}

public class Cachorro extends Animal {}

Já no relacionamento TEM UM, sua classe TEM um atributo que é de determinado tipo, por exemplo:

public class Raca {}
public class Cachorro {
private Raca raca;
//Getters e Setters para Raca
}

Entendido? No primeiro caso, cachorro É UM animal.
No segundo, cachorro TEM UMa raça.

Y

cristianomariano:
Pelo que eu entendo, no relacionamento É UM, você usaria extends ou implements, ou seja, herança. Por exemplo:

public class Animal {}

public class Cachorro extends Animal {}

Já no relacionamento TEM UM, sua classe TEM um atributo que é de determinado tipo, por exemplo:

public class Raca {}
public class Cachorro {
private Raca raca;
//Getters e Setters para Raca
}

Entendido? No primeiro caso, cachorro É UM animal.
No segundo, cachorro TEM UMa raça.

É isso mesmo.

Não posso afirmar com 100% de certeza, mas acredito que para um relacionamento É UM, em alguma das classes envolvidas deverá de haver um implements ou extends. É uma maneira bem informal de assimilar o processo, mas ajuda em certos raciocínios.

LPJava

pegando os exemplos acima parceiro vc tem tudo que precisa, ou seja, um Cachorro TEM UMA coleira mais um ANIMAL NAO TEM UMA COLEIRA? percebe a diferença? pegue o gancho da diferença de tem um e é-um que vc implementa. Entao cachorro pode ter um objeto coleira… mais nao pode ser uma coleira.

esepro ter ajudado !!

Criado 13 de janeiro de 2007
Ultima resposta 13 de jan. de 2007
Respostas 4
Participantes 5