A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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 Universidade Federal de Pernamburco 2012.1

2 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/lingu agens/OrientadaObjetos2/orientada Objetos2.htmlhttp://www.cin.ufpe.br/~in1007/lingu agens/OrientadaObjetos2/orientada Objetos2.html 2

3 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

4 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

5 Construtor Classes Geradas –NewOO2 (ListaExpressao) –DecClasseSimplesOO2 (DecConstrutor) –DecConstrutor (checaTipo, getProcedimento) –DefClasseOO2 –DecVariavelObjetoOO2 5

6 Construtor - NewOO2 6

7 Construtor - DecConstrutor 7

8 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 },

9 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() }

10 Herança Comandos Modificados: –AtribuicaoOO2 –ChamadaMetodoOO2 –NewOO2 Expressões modificadas: –AcessoAtributoOO2 –AcessoAtributoThisOO2 10

11 Herança - AtribuicaoOO2 11

12 Herança - ChamadaMetodoOO2 12

13 Herança - NewOO2 13

14 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 } },

15 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() }

16 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]

17 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

18 Pilha Ids Map de Objetos mapDefClasse { 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 Tv = DefClasse{{campos}, {metodos}}

19 proxRef = Ref0proxRef = Ref1 Pilha Ids … { Tv tv := new Tv(false,110,13,20); … EstadoObjTv0 volume=0 Canal=3 in out tv = null Map de Objetos tv = Ref0 Ref0 = ObjTv0 mapDefClasse Eletrodomestico = DefClasse{{campos}, {metodos}} Tv = DefClasse{{campos}, {metodos}} ligado = false, voltagem = 220 EstadoObjTv0 volume=20 ligado = false Canal=13 voltagem = 110 ArrayList

20 proxRef = Ref0proxRef = Ref1 Pilha Ids … tv.imprimeEstado();//metodo da superclasse tv.imprimeEstadoTv() } EstadoObjTv0 volume=0 Canal=3 in out Map de Objetos tv = Ref0 Ref0 = ObjTv0 mapDefClasse Eletrodomestico = DefClasse{{campos}, {metodos}} Tv = DefClasse{{campos}, {metodos}} ligado = false, voltagem = 220 EstadoObjTv0 volume=20 ligado = false Canal=13 voltagem = 110 ArrayList

21 TO-DO Implementar Overloading Implementar Polimorfismo Adicionar operador super Adicionar modificadores de acesso 21


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google