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

  • Upload
    ananda

  • View
    19

  • Download
    2

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

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

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

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

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

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

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

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

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

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

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

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

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

DecClasseAbstrata

12

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

ListaCorpoClasseAbstrata

13

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

CorpoClasseAbstrata

14

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

DecProcedimentoSimples

15

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

DecProcedimentoAbstrato

16

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

DecProcedimentoConcreto

17

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

18

Dúvidas?