Como essa semana está difícil de arranjar horário, a solução é a seguinte, quem ainda tiver dúvidas na lista 2, fale comigo diretamente (E-mail, MSN ou pessoalmente) e nós marcamos um horário particular para tirar suas dúvidas. Procurem juntar um grupinho p/ eu não ter que dar várias aulas separadas, mas caso vc não tenha amigos pode marcar sozinho mesmo =).
Aliás, eu não sou o único com quem vcs podem fazer isso e não apenas em época de lista, podem fazer isso durante todo o período com qualquer monitor. On 22 set, 22:50, "Miguel Jonathan" <[EMAIL PROTECTED]> wrote: > Ei, nada de poluir o tópico! > > 2008/9/22 Zaedy Sayão <[EMAIL PROTECTED]> > > > 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 -~----------~----~----~----~------~----~------~--~---
