Verdade, Buss anda bem quieto.

Ando ate estranhando.
Deve ta preparando uma bomba pra gente....xD

[]s

2008/9/22 Flavio Costa <[EMAIL PROTECTED]>

> Buss anda meio calado ultimamente, estamos precisando de polêmicas =P
>
> 2008/9/22 Miguel Jonathan <[EMAIL PROTECTED]>
>
>> O Peter explicou bem a idéia, vamos reforçar alguns pontos:
>>
>>
>> Uma referência de um determinado tipo (ex: Pessoa) pode apontar para
>> qualquer objeto que seja da classe Pessoa ou de alguma subclasse dela (ex:
>> Aluno, Professor):
>> Pessoa p1 = new Pessoa();
>> Pessoa p2 = new Aluno();
>> Pessoa p3 = new Professor();
>>
>> E, em tempo de execução, podemos fazer qualquer dessas variaveis passar a
>> apontar para outro objeto, desde que seja Pessoa ou subclasse dela:
>> Ex:   p2 = p1;   // etc.
>>
>> A única coisa que podemos garantir, a qualquer tempo, quando enviamos uma
>> mensagem a um objeto através de uma referência do tipo Pessoa, é que esse
>> objeto é capaz de responder ao protocolo de Pessoa.
>> Não podemos fazer algo como:
>>   p2.getDre();
>> Porque nada nos garante que p2 estará apontando sempre para um Aluno.
>>
>> Mas sempre poderemos fazer, com a certeza de que funcionará, algo assim:
>>   p2.getNome();
>> Porque getNome() é um método definido em Pessoa, portanto herdado ou
>> modificado nas subclasses.
>>
>> Alguém dirá: mas EU SEI que no meu programa, na hora que eu for fazer
>> p2.getDre(), p2 estará apontando para um Aluno, porque fui eu quem fiz isso
>> em uma linha anterior. Porque não compila?
>>
>> A resposta é que o compilador não faz uma análise do seu código para
>> checar isso, senão a compilação levaria séculos. Mas ele aceita que você
>> diga: "Pode compilar, que eu garanto que vai funcionar". Para dizer isso ao
>> compilador, você precisa fazer uma coerção do tipo da referência (ou
>> casting, em inglês):
>>   ( (Aluno)p2).getDre();
>> ou, se preferir mais clareza:
>>     Aluno alu = (Aluno) p2;
>>     alu.getDre();
>> Aí o compilador não reclama mais.
>>
>> Com interfaces, ocorre uma situação similar.
>> Assuma que Pessoa implementa a interface Comparable<Pessoa>. Nesse caso, é
>> como se Pessoa (e, por extensão, também Aluno e Professor) também herdassem
>> o método dessa interface. Na realidade Pessoa apenas herda a obrigação de
>> implementar esse método, mas na prática isso significa que podemos garantir
>> que Profesor, Aluno, e Data sempre responderão à mensagem compareTo(Pessoa
>> p).
>> Podemos fazer então:
>> Comparable<Pessoa> comp1 = new Aluno();
>> Comparable<Pessoa> comp2 = new Professor();
>>
>> A única coisa que podemos garantir de uma variável tipo Comparable<Pessoa>
>> é que ela pode apontar para objetos que a implementam, mais nada.
>>
>> Portanto, escrever comp1.getDre()  dará erro de compilação, porque nada
>> impede que você tenha feito antes:
>>   comp1 = comp2;
>> e, nesse caso, comp1 agora estaria apontando para um Professor, que não
>> sabe o que é getDre() !
>>
>> Mas sempre poderemos escrever:
>> Pessoa p = new Pessoa(.....);
>> comp1.compareTo(p);
>>
>> É isso aí...
>>
>> Jonathan
>>
>>
>> 2008/9/22 Zaedy Sayão <[EMAIL PROTECTED]>
>>
>> Eu cansei de falar isso na monitoria de hj....
>>> Eh bom q vc nao tenha ido, senao eu vou te matar...xD
>>>
>>> Mas isso eh meio complicado por email.
>>> Se me achar amanha antes do teste te explico pessoalmente...
>>>
>>> []s
>>>
>>> 2008/9/22 Peter <[EMAIL PROTECTED]>
>>>
>>>  Vou me aventurar... vamos ver se consigo ajudar:
>>>>
>>>> Imagine uma variável do tipo int.
>>>> Ele só pode apontar para valores tipo int.
>>>> Logo, só vai poder participar de operações que estejam definidas para o
>>>> tipo int.
>>>> Quando definimos uma classe ou uma interface, estamos definindo um tipo
>>>> também.
>>>>
>>>> Uma variável de um tipo de uma interface só pode participar de operações
>>>> válidas para aquela interface, ou seja, vc só vai conseguir chamar os
>>>> métodos declarados naquela interface (ou numa interface da qual ela tenha
>>>> herdado).
>>>> Isso pq esta variável estará apontando para uma classe qualquer da qual
>>>> a única coisa que vc pode garantir é que ela implementa aqueles métodos.
>>>> Logo, vc só poderá chamar aqueles métodos, independe da classe da instância
>>>> apontada por aquela referência.
>>>>
>>>> O mesmo serve para classes abstratas E concretas. Se uma referência de
>>>> um tipo de uma classe X aponta para uma instância de uma subclasse Y, vc só
>>>> poderá chamar métodos da classe X e das superclasses dela, não conseguirá
>>>> acessar os métodos exclusivos da subclasse Y.
>>>>
>>>> Isto garante tipagem da linguagem. Java é uma linguagem fortemente
>>>> tipada.
>>>>
>>>> Espero ter conseguido ajudar. Se vc tiver dúvidas, pode me ligar até
>>>> 21:00 ou aparecer no msn, icq, google talk, skype, sinal de fumaça, etc,
>>>> etc...
>>>>
>>>> Abraço!
>>>>
>>>>  Peter P. Lupo
>>>> Undergraduating in Computer Science DCC/UFRJ
>>>> Sun Certified Java Associatehttp://pplupo.googlepages.com/
>>>> Cell. +55 (21) 81742487
>>>>
>>>>
>>>>
>>>> Flavio Costa wrote:
>>>>
>>>> Meio dificil explicar isso via e-mail.
>>>> Acho que essa dúvida deveria ser sanada pessoalmente com os monitores ou
>>>> o professor.
>>>>
>>>> 2008/9/22 FernandoKling <[EMAIL PROTECTED]>
>>>>
>>>>>
>>>>> se eu entendi bem, a dúvida do gustavo é em relaçao à variaveis cujo
>>>>> tipo sao interfaces ou classes abstratas
>>>>> tipo o trecho de código q tinha no teste 1:
>>>>> M x = new A();
>>>>> onde M podia ser uma interface...
>>>>>
>>>>> On 22 set, 19:27, Gustavo Cury <[EMAIL PROTECTED]> wrote:
>>>>> > Sobre esta dúvida: "Uso correto de variáveis do tipo de uma interface
>>>>> ou do tipo de uma classe abstrata"
>>>>> > Está na pagina do professor, fui olhando os tópicos e quando chegou
>>>>> nesse, não entendi.
>>>>> > Gustavo Cury
>>>>> >
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Flávio Coutinho da Costa
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Zaedy Dantas Sayão
>>> Graduando em Ciência da Computação DCC/UFRJ
>>> http://www.manufato.com.br/
>>> MSN: [EMAIL PROTECTED]
>>>
>>>
>>>
>>
>>
>>
>
>
> --
> Flávio Coutinho da Costa
>
> >
>


-- 
Zaedy Dantas Sayão
Graduando em Ciência da Computação DCC/UFRJ
http://www.manufato.com.br/
MSN: [EMAIL PROTECTED]

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Comp 
2 - Geral" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/comp2-geral?hl=en
-~----------~----~----~----~------~----~------~--~---

Responder a