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 e Paulo Borba Gustavo Pinto Marcelo Queiroz.

Apresentações semelhantes


Apresentação em tema: "Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz."— Transcrição da apresentação:

1 Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz Rafael Dantas Renan Pereira Centro de Informática Universidade Federal de Pernamburco

2 2 Conceitos Básicos A problemática, A linguagem OO1 foi desenvolvida como passo inicial para abordar os conceitos básicos da orientação a objetos. Devido a este fato, algumas características interessantes ficaram de fora desta versão inicial da linguagem. 2

3 3 Conceitos Básicos A problemática, A linguagem OO2 tem como característica adicionar alguns conceitos amplamente conhecidos em linguagens mais maduras, como construtores e a herança, e, consequentemente, prover um maior poder de expressão para a linguagem. 3

4 BNF http://www.cin.ufpe.br/~in1007/lingu agens/OrientadaObjetos2/orientada Objetos2.htmlhttp://www.cin.ufpe.br/~in1007/lingu agens/OrientadaObjetos2/orientada Objetos2.html Adição de Construtor e Herança 4

5 Construtor Métodos especiais chamados automaticamente a cada criação de um objeto Através do comando new Não pssuem valor de retorno e tem o mesmo nome da classe 5

6 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 6

7 Construtor Classes Geradas –NewOO2 (ListaExpressao) –DecClasseSimplesOO2 (DecConstrutor) –DecConstrutor (checaTipo, getProcedimento) –DefClasseOO2 –DecVariavelObjetoOO2 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 Exemplo 11 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 }, Continua…

12 Herança Exemplo - Cont. 12 proc diminuirVolume(int volumeMenos){ if(not (this.volume == 0)) then { this.volume := this.volume - volumeMenos } }, proc imprimeEstadoTv(){ write("Ligado: " ++ this.ligado); write("Voltagem: " ++ this.voltagem); write("Canal: " ++ this.canal); write("Volume: " ++ this.volume) } },

13 Herança Exemplo – Cont. 13 classe TvLCD extends Tv{ boolean fullHD = true; TvLCD(boolean ligado, int voltagem, int canal, int volume, boolean fullHD){ this.ligado := ligado; this.voltagem := voltagem; this.canal := canal; this.volume := volume; this.fullHD := fullHD }, proc imprimeEstadoTvLCD(){ this.imprimeEstadoTv(); write("FullHD: " ++ this.fullHD) } };

14 Herança Exemplo – Cont. 14 { Tv tv := new Tv(false,110,13,20); write("Estado Inicial da Tv"); write("------------------------"); tv.imprimeEstado(); tv.imprimeEstadoTv(); write(""); write("Aumentando volume"); write("------------------------"); tv.aumentarVolume(); tv.imprimeEstadoTv() }

15 Herança Exemplo – Cont. 15 { TvLCD tvLCD := new TvLCD(false,110,13,20, true), Tv tv := new Tv(true,220,4,35); write(""); write("TvLCD estado inicial"); write("------------------------"); tvLCD.imprimeEstadoTvLCD (); write(""); write("TvLCD mudando para o canal 50"); write("------------------------"); tvLCD.canal := 50; tvLCD.imprimeEstadoTvLCD (); write(""); write("Diminuindo o volume da Tv em 10"); write("------------------------"); tv.diminuirVolume(10); tv.imprimeEstadoTv() }

16 Exercícios Implementar Overloading Implementar Polimorfismo Adicionar operador super Adicionar modificadores de acesso 16


Carregar ppt "Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz."

Apresentações semelhantes


Anúncios Google