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. Vilmar

>Herança Multipla é um assunto muito complexo de C++. Antes de criar uma

>classe com herança multipla voce deve saber muito bem o que está
>fazendo. Não é possivel criar uma clase filho de duas classes que tem
um
>metodo foo com o mesmo signature.
>
>Precisa saber que Herança multipla não é uma coisa muito usado nem em

>C++. 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 fazer
com uma
>> classe sua é mudar o nomes dos métodos. Todas as chamadas para este
métodos
>> terão que ser alteradas. E ainda há vezes que você simplesmente não
pode
>> mudar esses nomes, ou por não ter o código fonte, ou por que alguma
outra
>> entidade 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 mais

>> classes) pais tenham métodos com mesmo nome. Cada solução inventada
acaba
>> caindo em pequenos problemas, aumentando em muito o custo de implementação
e
>> a transparência fica prejudicada.
>>
>> Por causa disso, os desenvolvedores da linguagem java preferiram evitar
a
>> heranç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 de
tipo no
>> uso 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 é
muito
>> difícil de resolver! Gostaria de saber onde está o problema de resolver

>> ambigüidades? Pois se for apenas no nome de métodos, não ficaria fácil

>> resolver alterando os nomes? Ou essa minha análise é muito simplista,
e o
>> problema é 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-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]

>> -------------------------------------------------------------------------

>>
>> ------------------------------ 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]

>> -------------------------------------------------------------------------

>>
>>
>
>
>------------------------------ 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]

>-------------------------------------------------------------------------

>
>

__________________________________________________________
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]
-------------------------------------------------------------------------

Reply via email to