dúvida herança X composição  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
akumaldo
Java Ninja
[Avatar]

Membro desde: 09/06/2006 20:30:06
Mensagens: 283
Offline

Alguém poderia me explicar herança X(versus) composição?
os prós e contras....ou melhor...explicar o que é uma composição...

aguardo...

"O homem se resume em sua vontade de poder...Vontade de poder e nada mais! Viva a vida, morte a verdade..."
Nietzsche
Luiz Henrique Coura
Java Ninja
[Avatar]

Membro desde: 28/04/2004 21:03:05
Mensagens: 283
Localização: Lorena-SP
Offline

composição, conhecido tb como TEM-UM, é uma associação mais forte. é qd uma parte não vive sem o todo.

vc consegue imaginar um corpo humano sem coração?


pense em herança como É-UM.

um pitbulll é um cachorro, q é um animal, mamífero, vertebrado...

"A única pergunta estúpida é aquela que você nunca faz"
Anônimo

Luiz Henrique Coura
[MSN]
akumaldo
Java Ninja
[Avatar]

Membro desde: 09/06/2006 20:30:06
Mensagens: 283
Offline

Luiz Henrique Coura wrote:composição, conhecido tb como TEM-UM, é uma associação mais forte. é qd uma parte não vive sem o todo.

vc consegue imaginar um corpo humano sem coração?


pense em herança como É-UM.

um pitbulll é um cachorro, q é um animal, mamífero, vertebrado...


ótimo...entendi essa explicação sim!

agora poderia me dar exemplo em java como isso acontece???(os prós de cada...os contras...exemplos...)

"O homem se resume em sua vontade de poder...Vontade de poder e nada mais! Viva a vida, morte a verdade..."
Nietzsche
Mantu
GUJ Ranger
[Avatar]

Membro desde: 27/03/2006 09:05:16
Mensagens: 961
Localização: São Paulo/SP
Offline

Quer ver um exemplo prático?
Quando vc tem uma classe com essa cara ...


... dizemos que String compõe Conta, assim como BigDecimal e Date também compõe Conta. É bem o que nosso amigo te respondeu: Conta TEM-UM String, TEM-UM Date e TEM_UM BigDecimal.
.
Agora, vc já ouviu dizer que em Java, tudo é Object (salvo os tipos primitivos byte, short, char, int, long, float, double e boolean)? Dizem isso por que qualquer classe que é criada (ou existente) em Java É-UM Object. Isso quer dizer que há uma relação de herança entre Conta e Object, assim como entre String e Object, Date e Object, etc... A herança, como o LHC (desculpe a intimidade! :thumbupdisse, faz com que vc possa tratar um pitbull como um mamífero, este como um animal, este como um ser vivo, e da mesma forma, vc pode tratar uma Conta como um Object, pois conta É-UM Object. Não acredita? faça o teste! Pegue uma instancia daquela sua classe Banco lá do outro post, e joga ela num syso, assim:

Vai imprimir na tela alguma coisa tipo "seu.pacote.Banco@787d8f"
Perceba agora duas coisas:
1)O método println não tem nenhuma versão(sobrecarga) que receba como parâmetro uma instância da sua classe Banco, isso é óbvio.
2)O método println tem uma versão que recebe como parâmetro um Object e, internamente, ele joga na tela o retorno do método toString() desse Object.
Aí eu te pergunto: O que diabos aconteceu que, mesmo o println não tendo uma versão que receba sua classe Banco, ele imprimiu na tela aquela joça com o "@" no meio??? Simples, vc, sem perceber, usou a versão do println que recebe um Object, isto porque o seu Banco É-UM Object.
"Ah, mas o meu Banco naum tem nenhum método chamado toString()! Como então o println conseguiu dar um toString() no meu Banco???"
Simples:
Um mamífero mama, certo? Então um pittbull também mama!
Um Object pode "toStringar"(tem toString()), certo? Então um Banco também pode "toStringar"!
A coisa toda é mais ou menos assim, tem muito mais conceito aí por trás disso tudo, ok? Dá uma fuçada no GUJ por palavras como "instância", "herança", "referência", "composição" que vc acha bastante coisa sobre o assunto.

[]'s
Mantu

"Vou lançar o 'Caguei'. Caguei para o 'Cansei'". Luciano Camargo
"O povo votou contra a opinião pública". Um certo jornalão da mídia golpista, a respeito da vitória de um certo cadidato a presidente do Brasil.

[Email] [MSN] [ICQ]
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

Mantu wrote:Quer ver um exemplo prático?
Quando vc tem uma classe com essa cara ...


... dizemos que String compõe Conta, assim como BigDecimal e Date também compõe Conta. É bem o que nosso amigo te respondeu: Conta TEM-UM String, TEM-UM Date e TEM_UM BigDecimal.

Na verdade é mais comum dizer que uma conta TEM, ou É COMPOSTA POR:
cpf, saldo, dataAbertura, e não dos tipos de dados

Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
kuchma
Moderador
[Avatar]

Membro desde: 17/01/2003 19:36:16
Mensagens: 1231
Localização: Curitiba - PR
Offline

Discussao, estrategias, pros e contras:

http://c2.com/cgi/wiki?CompositionInsteadOfInheritance
http://c2.com/cgi/wiki?UseCompositionAndInterfacesWithoutClassInheritance


Marcio Kuchma

E tu, Belém-Efrata, pequena demais para figurar como grupo de milhares de Judá, de ti me sairá o que há de reinar em Israel, e cujas origens são desde os tempos antigos, desde os dias da eternidade. Mq 5:2, Miquéias, 750 AC aprox.
[WWW] [ICQ]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team