Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz

Slides:



Advertisements
Apresentações semelhantes
Programação Orientada a Objetos*
Advertisements

LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INSTRUÇÕES DE CONTROLE – PARTE I Prof. Thiago Pereira Rique
Linguagens de Programação Orientadas a Objetos
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Prof. Heloise Manica Paris Teixeira
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Tiago Salmito SystemC Tiago Salmito
Animador para a Linguagem Funcional 2 Carlos Eduardo Lima Lucas Roberto Bechert Schmitz Leonardo Lucena.
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Linguagens de programação
Orientação a Objetos Classes
Apresentação da Linguagem Python
Centro Integrado de Tecnologia da Informação
Capítulo 9 Herança 1.
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
CRIANDO OBJETOS EM JAVA
Implementar Listas em Linguagem Funcional II
Tipos Agregados Homogêneos e Listas
Funções Declaração function nomedafunção (arg_1, arg_2,..., arg_n) corpoDaFunção end.
Aula prática 13 Orientação a Objetos – C++ Parte 1
Definição de tipos - LF3Definição de tipos - LF3 PLP - Apresentação 1.
DEFINIÇÃO DE TIPOS – LF3 PLP – Apresentação 2. Equipe Felype Santiago Maria Carolina Paola Rodrigues Rodrigo Cardoso.
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Programação I Aula 2 (Métodos)
Estudo dos Conceitos e Paradigmas de Programação
Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
DI UFPE Semântica de Java Java and the Java Virtual Machine - Definition, Verification, Validation Robert Stark, Joachim Schmid, and Egon Borger Wolfram.
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 Linguagem Imperativa 1
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Paradigma Funcional Apresentação de LF1.
Paradigmas de Linguagens de Programação Linguagem Orientada a Objetos 1 Augusto Sampaio e Paulo Borba Departamento de Informática Universidade Federal.
Augusto Sampaio e Paulo Borba Centro de Informática
Augusto Sampaio e Paulo Borba Centro de Informática
Linguagens de Programação II
Projeto PLP Persistência em OO1 Equipe: Ana Paula Cavalcanti Clelio Feitosa Zildomar Felix Professor: Augusto Sampaio.
Orientação a Objetos e Java Graduação em Ciência da Computação
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Programação Orientada a Objetos Curso de Engenharia da Computação Parte 03 – Conceitos Básicos III Prof. Fabricio Mota Oliveira
Paradigma funcional.
Sistema de Transformação para a linguagem OO1 Adeline Sousa Gustavo Santos.
Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Geração de Código Equipe de Monitores Teoria e Implementação de Linguagens Computacionais – IF688.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Estruturas de Dados I Segundo Período de 2008 Gabarito da Primeira Prova.
Linguagem Orientada a Agentes Allan Lima, Bruno Edson, Nancy Lyra.
Construtores e Destrutores
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Semântica de Linguagens de Programação
1 Diego Machado Dias Rodrigo Cézar Luna dos Santos Weslley Silva Torres.
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
Projeto de PLP (2005.1) Extensão da Linguagem OA1 (2003.1) Alunos: Alberto Costa Neto (acn) Manoel Messias da Silva Menezes Júnior (mmsmj) Rafael Leão.
Aula Prática 13 Orientação a Objeto Monitoria
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Animador e Editor para a Linguagem Funcional 2 Carlos Eduardo Lima Lucas Roberto Bechert Schmitz Leonardo Reis Lucena Centro de Informática – UFPE, 2005.
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
Emanuella Aleixo ( José Antônio Juliana Mafra Marcela Balbino
Projeto II - PLP Prof. Augusto Sampaio
Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz.
Módulo II Capítulo 1: Orientação a Objetos
Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz.
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Linguagem Orientada a Objetos 2
Transcrição da apresentação:

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

O Paradigma Orientado a Objetos

Visão Geral Atributos são similares às variáveis das Linguagens Imperativas 1 e 2 Métodos são similares aos procedimentos da Linguagem Imperativa 2 Métodos não são valores e podem ser recursivos e parametrizados

Visão Geral Estende a Linguagem Imperativa 1 com declarações de classes, criação dinâmica de objetos, e chamada de métodos Explicar conceitos de OO

BNF http://www.cin.ufpe.br/~in1007/linguagens/Or ientadaObjetos1/orientadaObjetos1.html Novos comandos: New, ChamadaMétodo, Atribuição (baseada em AcessoVariável) Novas declarações: DecClasse, DecVariavelObjeto Criação de Contexto para o Objeto ContextoObjeto

Programa Exemplo 1 { classe Contador { { int valor = 1; proc print() { write(this.valor) }, proc inc() { this.valor := this.valor+1 } };     { Contador c := new Contador, Contador c2:= new Contador; c := c2; c2.print(); c.inc(); c2.print() }

Programa Exemplo 2 int valor = -100, LValor prox = null; { classe LValor { int valor = -100, LValor prox = null; proc insere(int v) { if ((this).valor == -100) then { this.valor := v; this.prox := new LValor } else {(this).prox.insere(v)} },

Programa Exemplo 2 – cont. proc print() { write(this.valor); if (not(this.prox == null)) then {(this).prox.print()} else {skip} } }; { LValor lv := new LValor; lv.insere(3); lv.insere(4); lv.print()

Ambiente do Interpretador O ambiente inclui seis componentes: uma pilha de mapeamentos de identificadores (incluindo this) em valores (incluindo referências) um mapeamento de referências em objetos a próxima referência disponível a ser alocada um mapeamento de identificadores em definições de classes listas de valores de entrada e saída

Contexto do Objeto O objeto passa a ter um estado independente O estado do objeto (seu contexto) é um mapeamento entre identificadores e valores. Os identificadores são os atributos desse objeto

Contador = DefClasse{{valor}, {print(), inc()}} mapDefClasse<id, DefClasse> Contador = DefClasse{{valor}, {print(), inc()}} proxRef = Ref0 in Map de Objetos <valorRef,objeto> Pilha Ids <id, valor> out classe Contador { int valor = 1; proc print() {write(this.valor)}, proc inc() {this.valor := this.valor+1} } … comando.executar(decClasse.elabora(ambiente));

Contador = DefClasse{{valor}, {print(), inc()}} mapDefClasse<id, DefClasse> Contador = DefClasse{{valor}, {print(), inc()}} proxRef = Ref2 proxRef = Ref0 Ref0 = ObjContador1 Ref1 = ObjContador2 EstadoObj1 valor = 1 c2 = null c1 = null c2 = Ref1 c1 = Ref0 EstadoObj2 valor = 1 in Map de Objetos <valorRef,objeto> Pilha Ids <id, valor> out … { Contador c1 := new Contador, Contador c2:= new Contador ; comando.executar(decClasse.elabora(ambiente)); ambiente.incrementa(); comando.executar(declaracao.elabora(ambiente)); declaracao2.elabora(declaracao1.elabora(ambiente)) decVariavelObjeto.elabora() new.executa()

Contador = DefClasse{{valor}, {print(), inc()}} mapDefClasse<id, DefClasse> Contador = DefClasse{{valor}, {print(), inc()}} proxRef = Ref2 Ref0 = ObjContador1 Ref1 = ObjContador2 EstadoObj1 valor = 1 c2 = Ref1 c1 = Ref0 c2 = Ref1 c1 = Ref1 EstadoObj2 valor = 1 in Map de Objetos <valorRef,objeto> Pilha Ids <id, valor> out … c1 := c2; comando.executar(declaracao.elabora(ambiente)); comando1.executar() atribuicao.executar() ambiente.changeValor(idVariavel, expressao.avaliar)

Contador = DefClasse{{valor}, {print(), inc()}} mapDefClasse<id, DefClasse> Contador = DefClasse{{valor}, {print(), inc()}} proxRef = Ref2 Ref0 = ObjContador1 Ref1 = ObjContador2 EstadoObj1 valor = 1 c2 = Ref1 c1 = Ref1 EstadoObj2 valor = 1 in Map de Objetos <valorRef,objeto> Pilha Ids <id, valor> out 3 out … c1.inc(); c2.print() } comando.executar(declaracao.elabora(ambiente)); comando2(3 e 4).executar() chamadaMetodo.executar() ambiente.changeValor(new Id("this"),vr) (Amb do Objeto) ambiente.incrementa() (Ambiente do Objeto) procedimento.executar() ambiente.restaura()

Projeto e Implementação do Interpretador http://www.cin.ufpe.br/~in1007/lingu agens/OrientadaObjetos1/orientada Objetos1.html A execução de comandos retorna um contexto derivado do que é recebido como argumento Modelo de projeto Partes do código

Exercícios Estenda a Linguagem Orientada a Objetos com os seguintes recursos: remoção dinâmica de objetos inspeção dinâmica de tipos, como o instanceof de Java construtores (inicializadores) como em Java (implementado na OO2)