180 likes | 265 Views
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
E N D
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 • 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
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
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
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
Classe Abstrata • Reorganização das classes • DecClasseICABS • DecClasseConcreta • DecClasseAbstrata • DecProcedimentoICABS • DecProcedimentoConcreto • DecProcedimentoAbstrato • Algo a mais?
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
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] ")"
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
Modificações na BNF - 4 • Definição de Classe Concreta DecClasseConcreta ::= modAcesso "classe" Id ["extends" Id] ["implements" Id] "{" CorpoClasseConcreta "}" CorpoClasseConcreta ::= DecVariavel • | ListaDecProcConcreto • | CorpoClasseConcreta ";" CorpoClasseConcreta
Modificações na BNF - 5 • Definição de Procedimentos DecProcedimento ::= DecProcConcreto • | DecProcAbstrato • | DecProcedimento "," DecProcedimento DecProcConcreto ::= AssinaturaMetodo "{" Comando "}" ListaDecProcConcreto ::= DecProcConcreto • | DecProcConcreto "," ListaDecProcConcreto DecProcAbstrato ::= "abstract" AssinaturaMetodo