Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1
description
Transcript of Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1
![Page 1: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/1.jpg)
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)
![Page 2: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/2.jpg)
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
![Page 3: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/3.jpg)
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
![Page 4: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/4.jpg)
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
![Page 5: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/5.jpg)
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
![Page 6: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/6.jpg)
Classe Abstrata
• Reorganização das classes– DecClasseICABS
• DecClasseConcreta• DecClasseAbstrata
– DecProcedimentoICABS• DecProcedimentoConcreto• DecProcedimentoAbstrato
• Algo a mais?
6
![Page 7: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/7.jpg)
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
![Page 8: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/8.jpg)
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] ")"
![Page 9: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/9.jpg)
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
![Page 10: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/10.jpg)
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
![Page 11: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/11.jpg)
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
![Page 12: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/12.jpg)
DecClasseAbstrata
12
![Page 13: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/13.jpg)
ListaCorpoClasseAbstrata
13
![Page 14: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/14.jpg)
CorpoClasseAbstrata
14
![Page 15: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/15.jpg)
DecProcedimentoSimples
15
![Page 16: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/16.jpg)
DecProcedimentoAbstrato
16
![Page 17: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/17.jpg)
DecProcedimentoConcreto
17
![Page 18: Inserção dos conceitos de Interface e Classe Abstrata em LOO2 (2006.1) Projeto PLP 2008.1](https://reader035.fdocuments.us/reader035/viewer/2022062808/56815404550346895dc1fe26/html5/thumbnails/18.jpg)
18
Dúvidas?