O seu exemplo é perfeitamente possivel na esquema de Java com interfaces, apesar do fato que não entendo muito o seu exemplo.. Um professor nem sempre é um Funcionario também ?? Com alguns poderes a mais do que o professor ?? O que um Prof-Aluno pode fazer a mais (no role de aluno) do que um aluno commun ?? Alterar os proprios resultados no banco de dados ?? acho que não. Me indica um caso aonde é necessario instanciar um Profesor-Aluno ??
A mesma coisa com heranca simples. Pessoa<-Funcionario<-Professor. Assim o Porfessor tem todos os poderes de Funcionario e algo a mais definido na classe Professor.
Vamos lá
Professor::AtualizaPapel(); // que maravilha..
Aonde vou usar isso no mundo real? É exatamente este uso de herança multipla indevida que a Java quer impedir, já que pode facilmente criar erros.
Voltando ao meu exemplo de iostream, que é o exemplo classico de herança multipla. A classe stream contem todos os methodos básicos de trabalhar com um stream, instream e outstream extendem este classe base com os respectiovos methodos para ler ou escrever no stream. iostream combina estes dois em uma classe só. Nem instream nem outstream overwrites methodos do stream e iostream nao overwrites nada do funcionalidade do Stream.
Nao conheço o livro que vc falou, mas uma explicação de herança multipla acha se no livro The C++ programming Language de Bjarne Stroustrup.
[EMAIL PROTECTED] wrote:
[EMAIL PROTECTED]">Caro Sven
Herança múltipla resolve em C++ uma série de problemas difíceis de resolver
sem este recurso. Por exemplo, pode-se derivar de uma classe Persistente
para pôr em Banco de Dados, além das heranças próprias da hierarquia. Da
mesma forma, em CORBA pode-se fazer o binding por herança, sem comprometer
as heranças de interess.
Cria também problemas de seleção de métodos que tenham mesma assinatura
em alguma das bases herdadas, é verdade. Mas a solução existe e é até bastante
simples. Por exemplo
Pessoa
Funcionário Professor Aluno (herdam Pessoa)
Func-Prof Prof-aluno ... (Pessoas em mais de uma
função)
Fazem herança múltipla. Uma pessoa que seja Funcionário, Professor e Aluno,
ao mesmo tempo, e já tivemos vários aqui na nossa Universidade derivam
das três classes intermediárias.
Precisa-se gerenciar para ter uma única cópia de Pessoa (herança virtual
resolve). Se houver uma função de mesmo nome em Professor e em funcionário,
por exemplo, AtualizaPapel(), basta qualificar o ramo de herança desejado:
Professor :: AtualizaPapel(); // seleciona o ramo professor
Acho belíssima toda a discussão sobre Java mas incomoda-me a discussão
sobre C++ quando ela não aparece com a devida precisão. Mas absolutamente
não estou querendo criar polêmicas nem carregar bandeira.
Saudações
Prof. VilmarHerança Multipla é um assunto muito complexo de C++. Antes de criar umaclasse com herança multipla voce deve saber muito bem o que está
fazendo. Não é possivel criar uma clase filho de duas classes que temummetodo foo com o mesmo signature.
Precisa saber que Herança multipla não é uma coisa muito usado nem emC++. O caso que entra na minha cabeça é a classe iostream:
class stream{
}
class instream : public stream{
}
class outstream : public stream{
}
class iostream : public instream : public outstream{
}
sven
Jorge Martins wrote:Jean,
Mas isso é um enorme problema. A última coisa que você deseja fazercom umaclasse sua é mudar o nomes dos métodos. Todas as chamadas para estemétodosterão que ser alteradas. E ainda há vezes que você simplesmente nãopodemudar esses nomes, ou por não ter o código fonte, ou por que algumaoutraentidade que chama esse método não pode ser alterada.
E como é a escolha de qual método você irá herdar caso as duas (ou maisclasses) pais tenham métodos com mesmo nome. Cada solução inventadaacabacaindo em pequenos problemas, aumentando em muito o custo de implementaçãoea transparência fica prejudicada.
Por causa disso, os desenvolvedores da linguagem java preferiram evitaraherança múltipla. E o uso de interface vem como uma solução alternativa(pois não há aproveitamento de código) para manter a verificação detipo nouso de polimorfismo.
abraços
Jorge
-----Original Message-----
From: JEAN BARROS [mailto:[EMAIL PROTECTED]]
Sent: segunda-feira, 12 de março de 2001 12:57
To: [EMAIL PROTECTED]
Subject: [java-list] Herança Múltipla
Olá!
Java suporta apenas herança simples, e implementa interfaces! certo?Os defensores da herança simples em detrimento da herança múltipla,geralmente
argumentam que herança múltipla tem o problema da ambigüidade, que émuitodifícil de resolver! Gostaria de saber onde está o problema de resolverambigüidades? Pois se for apenas no nome de métodos, não ficaria fácilresolver alterando os nomes? Ou essa minha análise é muito simplista,e oproblema é bem maior? Me esclareçam por favor esta dúvida!
OBS: Não sou expert em C/C++, apenas quero tirar esta dúvida!
Abraços
Jean Fábio
____________________________________________________________________Get free email and a permanent address at http://www.netaddress.com/?N=1------------------------------ LISTA SOUJAVA ----------------------------http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SPdúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]------------------------------------------------------------------------------------------------------- LISTA SOUJAVA ----------------------------http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SPdúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]-------------------------------------------------------------------------
------------------------------ LISTA SOUJAVA ----------------------------http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SPdúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]-------------------------------------------------------------------------
__________________________________________________________
https://webmail.mackenzie.com.br - O Webmail do Mackenzie!
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------
