1 / 18

Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1

Alunos: Carlos Eduardo Pontual (ceplc) ‏ Fernanda d'Amorim (frsa) ‏ Filipe Motta (famb) ‏ Leopoldo Teixeira (lmt) ‏. Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1. Proposta do Projeto. Inserção do conceito de Interfaces

ananda
Download Presentation

Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Alunos: Carlos Eduardo Pontual (ceplc)‏ Fernanda d'Amorim (frsa)‏ Filipe Motta (famb)‏ Leopoldo Teixeira (lmt)‏ Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1)Projeto PLP 2008.1

  2. Proposta do Projeto • Inserção do conceito de Interfaces • Implementação de interfaces (uma ou mais) por classes concretas • Herança simples entre interfaces • Inserção do conceito de Classes Abstratas • Inserção do conceito de métodos abstratos • Classes abstratas que não herdam de outra classe abstrata devem possuir pelo menos um método abstrato • Herança simples entre classes abstratas

  3. Contribuições adicionais • Overloading • Uma classe pode definir mais de um método com o mesmo nome, contanto que tenham parâmetros de tipos diferentes • Um programa é um comando • Declarações de classes e interfaces são opcionais • Corpo da classe • Procedimentos e atributos podem ser declarados em qualquer ordem dentro da declaração da classe

  4. Interface • Novos mapeamentos no ambiente • Pilha de interfaces declaradas • Id de classe  Lista de interfaces • Alterações na BNF/Parser • Alteração de classes existentes • DecClasse, ExpInstanceOf • Introdução de novas classes • DeclaracaoInterface, DefInterface, ListaInterface, InterfaceNaoDeclaradaException, InterfaceJaDeclaradaException

  5. Modificações efetuadas • Introdução de nova classe • RelacaoClasseInterface (fecho) • Auxilia na avaliação de instanceOf • Ao contrário das classes, as interfaces não herdam de Object • ChecaTipo • Verifica quantidade, ordem e tipos dos parâmetros da interface • Verifica se interface a ser estendida por outra existe • Classes e interfaces não podem ter o mesmo nome

  6. Classe Abstrata • Reorganização das classes • DecClasseICABS • DecClasseConcreta • DecClasseAbstrata • DecProcedimentoICABS • DecProcedimentoConcreto • DecProcedimentoAbstrato • Algo a mais?

  7. Modificações na BNF - 1 • Definição de programa • Definição de programa • Definição de programa Programa ::= "{" [ Declaracoes ";" ] Comando "}" Declaracoes ::= DecInterface • | DecClasse • | Declaracoes “,” Declaracoes

  8. Modificações na BNF - 2 • Definição de Interface DecInterface ::= • "interface" Id ["extends" Id] "{" ListaAssinaturaMetodo "}" • | DecInterface "," DecInterface ListaAssinaturaMetodo ::= AssinaturaMetodo • | AssinaturaMetodo "," ListaAssinaturaMetodo AssinaturaMetodo ::= • modAcesso "proc" Id "(" [ListaDeclaracaoParametro] ")"

  9. Modificações na BNF - 3 • Definição de Classe Abstrata DecClasse ::= DecClasseAbstrata • | DecClasseConcreta • | DecClasse "," DecClasse DecClasseAbstrata ::= modAcesso "abstract" "classe" Id ["extends" Id] "{" CorpoClasseAbstrata "}" CorpoClasseAbstrata ::= DecVariavel • | DecProcedimento • | CorpoClasseAbstrata";" CorpoClasseAbstrata

  10. Modificações na BNF - 4 • Definição de Classe Concreta DecClasseConcreta ::= modAcesso "classe" Id ["extends" Id] ["implements" Id] "{" CorpoClasseConcreta "}" CorpoClasseConcreta ::= DecVariavel • | ListaDecProcConcreto • | CorpoClasseConcreta ";" CorpoClasseConcreta

  11. Modificações na BNF - 5 • Definição de Procedimentos DecProcedimento ::= DecProcConcreto • | DecProcAbstrato • | DecProcedimento "," DecProcedimento DecProcConcreto ::= AssinaturaMetodo "{" Comando "}" ListaDecProcConcreto ::= DecProcConcreto • | DecProcConcreto "," ListaDecProcConcreto DecProcAbstrato ::= "abstract" AssinaturaMetodo

  12. DecClasseAbstrata

  13. ListaCorpoClasseAbstrata

  14. CorpoClasseAbstrata

  15. DecProcedimentoSimples

  16. DecProcedimentoAbstrato

  17. DecProcedimentoConcreto

  18. Dúvidas?

More Related