Upload
ananda
View
19
Download
2
Tags:
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
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)
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
2
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
3
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
4
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
5
Classe Abstrata
• Reorganização das classes– DecClasseICABS
• DecClasseConcreta• DecClasseAbstrata
– DecProcedimentoICABS• DecProcedimentoConcreto• DecProcedimentoAbstrato
• Algo a mais?
6
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
DecClasseAbstrata
12
ListaCorpoClasseAbstrata
13
CorpoClasseAbstrata
14
DecProcedimentoSimples
15
DecProcedimentoAbstrato
16
DecProcedimentoConcreto
17
18
Dúvidas?