Duvida sobre herança x Composição

3 respostas Resolvido
herançaarray
Diego_Sampaio

Boa noite pessoal, estou iniciando na programação Orientada a objetos , estou fazendo um cadastro simples usando um vetor , esse mesmo cadastro anteriormente usando herança funcionava pois tinha a classe PESSOA , classe ALUNO , classe FUNCIONARIO, onde ALUNO E FUNCIONARIO herdavam de PESSOA , logo na classe principal eu consegui instancia um objeto : Pessoa alunofulano = new Aluno();
então passava esse objeto alunofulano para o meu array em outra classe CADASTRO, porem ao retirar a herança isso não e mais possível como fazer com composição?

3 Respostas

Lucas_Camara
Solucao aceita

Com composição, a pessoa será um atributo de aluno e funcionário. Com isso, para instanciar um aluno, por exemplo, você terá que criar a instância de aluno e pessoa separadamente e fazer a atribuição de pessoa em aluno.

class Aluno {
    private Pessoa pessoa;

    // getters and setters
}
class Main {
    public static void main(String args[]) {
        Aluno a = new Aluno();
        Pessoa p = new Pessoa();

        a.setPessoa(p);
    }
}
Diego_Sampaio

Lucas muito obrigado , funcionou aqui o meu teste, agora sem querer abusar mas ja abusando, notei que com herança foi bem mais simples fazer a mesma tarefa , então realmente tem vantagem usar composição?

Aluno aluno = new Aluno();		
	Pessoa pessoa= new Pessoa();	
	aluno.setPessoa(pessoa);		
	pessoa.setNome("DiegoSampaio");

teria como quando instanciar o Aluno ja setando a pessoa dele pra simplificar?

Lucas_Camara

Não se trata de vantagem em usar um ou outro, mas sim qual se encaixa melhor na situação. Herança é muito bem usado, por exemplo, numa especialização em banco de dados.

Criado 18 de setembro de 2016
Ultima resposta 19 de set. de 2016
Respostas 3
Participantes 2