[quote=diogogama][quote=Ruttmann][quote=Vina][quote=Ruttmann]
Aí está um ponto interessante. Eu ainda não consegui aprender corretamente a questão da composição.
Alguém tem um exemplo rápido de composição pra explicar?
Seria, por exemplo, uma classe Empresa que “tem um” Cliente? Esse cenário seria o caso de uma composição?[/quote]
Sim, segue um exemplo:
class Carro{
private Motor motor;
//getters e setters omitidos
}
O código acima diz que a minha classe Carro “tem-um” atributo do tipo motor.
Daí, entrando na instância da classe Carro, eu teria acesso ao atributo motor. Assim, eu consigo acessar os métodos e atributos do motor da seguinte forma:
carro = new Carro();
carro.getMotor().partida(); //liga o motor do carro
[/quote]
Ah, entendi! Bem do modo como eu estava pensando. Já usei muito isso estudando sem notar que estava usando composição…
Agradeço a todos que entraram na discussão, tirei várias dúvidas e acabei criando novas.
Estou estudando e me esforçando pra tentar um emprego com Java, gosto muito da plataforma e definitivamente é o que quero seguir a médio prazo. Infelizmente onde estou estagiando não tive chance ainda de trabalhar com isso.
Muito obrigado pela discussão levantada, é ótimo ter pontos de vista do pessoal que vivencia essas questões na prática.
Vou continuar meus estudos e se houver mais dúvidas, vou postando aqui.
Abraços! ;)[/quote]
Concorda que vc usar uma:
[code]class Carro {
}
class Celta extends carro {
}
[/code]
é muito diferente de:
class Carro {
private Celta celta;
}
mesmo que você consiga a mesma solução você perde um dos maiores benefícios da OO que é a herança (lembrando que usada corretamente).[/quote]
Com certeza.
Celta é um Carro e não está contido em um Carro(se bem que tem gente que diz que Celta não é carro né! rsrsrs Mas isso são problemas conceituais.)…
Quanto a essa questão do “tem um” e “é um” estou bem tranquilo. Teoria dos conjuntos é algo que ajuda muito nesse aspecto, estudei isso o semestre passado inteiro na faculdade…