paradigmas de linguagens de programação bnf e interpretador da linguagem orientada a objetos...

21
Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática Universidade Federal de Pernamburco 2012.1

Upload: internet

Post on 19-Apr-2015

105 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Paradigmas de Linguagens de Programação

BNF e Interpretador daLinguagem Orientada a

Objetos

Augusto SampaioJackson, Jean, Patrícia, Saulo

Centro de Informática

Universidade Federal de Pernamburco

2012.1

Page 2: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

BNF

• Mudança de paradigma: imperativa 1 => OO1

• Conceitos fundamentais de orientação a objetos ficaram de fora

• OO2 veio para adicionar Construtor (de fato) e Herança

• http://www.cin.ufpe.br/~in1007/linguagens/OrientadaObjetos2/orientadaObjetos2.html

2

Page 3: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Construtor

• Métodos especiais chamados automaticamente a cada criação de um objeto

• Através do comando new• Não possuem valor de retorno e

tem o mesmo nome da classe

3

Page 4: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Construtor

• Inicialmente, na linguagem OO1, não existe a definição formal de construtor

• A classe é criada através de um construtor simples, sem ser possível especializa-lo

• Linguagens mais sofisticadas permitem essa capacidade

4

Page 5: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Construtor

• Classes Geradas– NewOO2 (ListaExpressao)– DecClasseSimplesOO2

(DecConstrutor)– DecConstrutor (checaTipo,

getProcedimento)– DefClasseOO2– DecVariavelObjetoOO2

5

Page 6: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Construtor - NewOO2

6

Page 7: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Construtor - DecConstrutor

7

Page 8: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Exemplo Construtor

8

{ classe Eletrodomestico{ boolean ligado = false, int voltagem = 220; Eletrodomestico(boolean ligado, int voltagem){ this.ligado := ligado; this.voltagem := voltagem }, proc ligar(){ this.ligado := true }, proc desligar(){ this.ligado := false },

Page 9: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Exemplo Construtor - Cont

9

proc imprimeEstado(){ write("Ligado: " ++ this.ligado); write("Voltagem: " ++ this.voltagem) } }; { Eletrodomestico eletro := new Eletrodomestico(false,110); eletro.imprimeEstado(); eletro.ligar(); eletro.imprimeEstado() }}

Page 10: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Herança

• Comandos Modificados:– AtribuicaoOO2– ChamadaMetodoOO2– NewOO2

• Expressões modificadas:– AcessoAtributoOO2– AcessoAtributoThisOO2

10

Page 11: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Herança - AtribuicaoOO2

11

Page 12: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Herança - ChamadaMetodoOO2

12

Page 13: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Herança - NewOO2

13

Page 14: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Herança Exemplo

14

classe Tv extends Eletrodomestico{ int canal = 3, int volume = 0; Tv(boolean ligado, int voltagem, int canal, int volume){ this.ligado := ligado; this.voltagem := voltagem; this.canal := canal; this.volume := volume }, proc aumentarVolume(){ this.volume := this.volume + 1 }, proc diminuirVolume(){ if(not (this.volume == 0)) then { this.volume := this.volume - 1 } },

Page 15: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Herança Exemplo - Cont

15

proc imprimeEstadoTv(){ this.imprimeEstado(); write("Canal: " ++ this.canal); write("Volume: " ++ this.volume) } }; { Tv tv := new Tv(false,110,13,20); write(tv.voltagem);write("------------------------"); tv.imprimeEstado();write("------------------------"); tv.imprimeEstadoTv();write("------------------------"); tv.aumentarVolume(); tv.imprimeEstadoTv() }

Page 16: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Ambiente do Interpretador

• O ambiente inclui SETE componentes: – uma pilha de mapeamentos de

identificadores em valores– um mapeamento de referências em

objetos– a próxima referência disponível– um mapeamento de identificadores em

definições de classes– listas de valores de entrada e saída– Lista de mapeamento de superclasses

[classe => superclasse]

Page 17: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Contexto do Objeto

• Cada objeto tem um estado independente

• O estado do objeto (seu contexto) é um mapeamento entre identificadores e valores.

• Os identificadores são os atributos desse objeto

17

Page 18: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

Pilha Ids <id, valor> Map de Objetos <valorRef,objeto>

mapDefClasse<id, DefClasse>

{classe Eletrodomestico{ //ligado, voltagem //ligar, desligar, imprimeEstado},classe Tv extends Eletrodomestico{ //canal, volume //aumentarVolume, diminuirVolume //imprimeEstadoTv}

in

out

Eletrodomestico = DefClasse{{campos}, {metodos}}

proxRef = Ref0

ArrayList<SuperClasseMap> Tv = DefClasse{{campos}, {metodos}}

<Tv, Eletrodomestico>

Page 19: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

proxRef = Ref0proxRef = Ref1

Pilha Ids <id, valor>

…{ Tv tv := new Tv(false,110,13,20);…

EstadoObjTv0volume=0Canal=3

in

out

tv = null

Map de Objetos <valorRef,objeto>

tv = Ref0 Ref0 = ObjTv0

mapDefClasse<id, DefClasse>

Eletrodomestico = DefClasse{{campos}, {metodos}}

Tv = DefClasse{{campos}, {metodos}}

<Tv, Eletrodomestico>

ligado = false,voltagem = 220

EstadoObjTv0volume=20 ligado = falseCanal=13 voltagem = 110

ArrayList<SuperClasseMap>

Page 20: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

proxRef = Ref0proxRef = Ref1

Pilha Ids <id, valor>

…tv.imprimeEstado();//metodo da superclassetv.imprimeEstadoTv()}

EstadoObjTv0volume=0Canal=3

in

out Map de Objetos

<valorRef,objeto>

tv = Ref0 Ref0 = ObjTv0

mapDefClasse<id, DefClasse>

Eletrodomestico = DefClasse{{campos}, {metodos}}

Tv = DefClasse{{campos}, {metodos}}

<Tv, Eletrodomestico>

ligado = false,voltagem = 220

EstadoObjTv0volume=20 ligado = falseCanal=13 voltagem = 110

ArrayList<SuperClasseMap>

Page 21: Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática

TO-DO

• Implementar Overloading• Implementar Polimorfismo• Adicionar operador super• Adicionar modificadores de acesso

21