Herança ou Composição

7 respostas
S

Olá pessoal.

Sou novo aqui no Fórum e gostaria de saber se vcs podem me indicar algum artigo que explique bem qual a diferença entre Herança e Composição.

Infelizmente e temporariamente, sou leigo no inglês e todos que encontrei estão em inglês.

Agradeço a atenção.

Sidney.

7 Respostas

psandrelli

Dá uma lida nesse: http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/pat/herancavscomposicao.htm

Giulliano

Não acho q precise de uma apostila só pra isso…mas vc pode procurar alguma coisa sobre OO

Uma explicação prática pra vc:

COMPOSIÇÃO:

public class Endereco{
    private String rua;
}

public class Pessoa{
     private String nome;
     private Endereco endereco = new Endereco(); //Composição
}

HERANÇA:

public class Endereco{
    private String rua;
}

public class Pessoa extends Endereco{
     private String nome;
}
//Não recomendo nesse caso vc extender uma classe pessoa a classe Endereço, mas só para vc entender a diferença.
S

Então psandrelli.

Eu jah dei uma lida e relida nesse artigo, mas ainda achei meio confuso.
o que entendi:

Usar composição quando:

1 - O objeto tem de fazer override dos métodos.

    2 - O objeto não "é um" mas sim "um papel assumido por". 
         ex: Gerente extends Funcionario, Secretaria extends Funcionario. Ou seja, são papéis assumidos por Funcionário.

Vc conhece algum outro.

Obrigado pela ajuda.

S
Giulliano:
Não acho q precise de uma apostila só pra isso...mas vc pode procurar alguma coisa sobre OO

Uma explicação prática pra vc:

COMPOSIÇÃO:
public class Endereco{
    private String rua;
}

public class Pessoa{
     private String nome;
     private Endereco endereco = new Endereco(); //Composição
}

HERANÇA:

public class Endereco{
    private String rua;
}

public class Pessoa extends Endereco{
     private String nome;
}
//Não recomendo nesse caso vc extender uma classe pessoa a classe Endereço, mas só para vc entender a diferença.

Sim, entendi:

Endereço não "é uma" pessoa mas sim "compõe" o cadastro de uma pessoa.

No caso, se eu entendi, composição não eh uma extensão (uma sub-classe)? Ou não?

Giulliano

Entendeu sim…uma composição é apenas algo que compõe sua classe mas não necessariamente precisa ser UMA classe do mesmo tipo…

Se vc faz public Class Pessoa extends Enedereco {}

A partir daí sua classe Pessoa é UMA classe Endereço…e isso não tem lógica.

Mas se vc usou a composição então sua classe Pessoa TEM-UM Endereço…percebe a diferença…é isso acho q não tem mais o que falar.

S

Giulliano:
Entendeu sim…uma composição é apenas algo que compõe sua classe mas não necessariamente precisa ser UMA classe do mesmo tipo…

Se vc faz public Class Pessoa extends Enedereco {}

A partir daí sua classe Pessoa é UMA classe Endereço…e isso não tem lógica.

Mas se vc usou a composição então sua classe Pessoa TEM-UM Endereço…percebe a diferença…é isso acho q não tem mais o que falar.

Pucha vida, se é isso, então jah é possível resolver “alguns” problemas na hora de projetar um software!!!

Valeu pela explicação Giulliano.

Dieval_Guizelini

Acho que você pode dar uma olhada nos tutoriais da argonavis.

Esse em questão:
http://www.argonavis.com.br/cursos/java/j100/java_09.pdf

fw

Criado 18 de janeiro de 2008
Ultima resposta 19 de jan. de 2008
Respostas 7
Participantes 4