DI UFPE Semântica de Java Towards na Operational Semantics and Proof of Type Soundness for Java Sophia Drossopoulou e Susan Eisenbach Imperial College.

Slides:



Advertisements
Apresentações semelhantes
|Introdução a Java para programadores Telis. Jogo de Dados simples O jogo é jogado por dois jogadores. Cada jogador faz sua jogada (lança um dado), e.
Advertisements

Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Ferramenta de Desenvolvimento Material II-Bimestre Conceitos de lógica.
Paulo Marques Hernâni Pedroso
Exemplo dos Internamentos
Software Básico Silvio Fernandes
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
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 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
Bancos de Dados com Objetos
Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios.
Programação Concorrente
Curso Sistemas de Informação I Disciplina: Arquitetura de Software
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Linguagem de Programação II
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Aula 3 Evolução da Principais Linguagens
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aula 8 Orientação à Objetos
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Aula 10 Manipulação de Exceções
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Classes Abstractas.
Herança e Polimorfismo
Classes e objetos P. O. O. Prof. Grace.
Análise e Projetos de Sistemas UML-Linguagem de Modelagem Unificada Modelo de Dados com UML Diagrama de Classes Professor: Armando Hage.
Desenvolvimento de Projetos e Aplicações Web
JAVA: Conceitos Iniciais
PROGRAMAÇÃO I UNIDADE 1.
Aula prática - análise contextual
Object Oriented Software Construction (MEYER, Bertrand)
Linguagens de Programação
Desenvolvimento de Sistemas Orientados a Aspectos
Vânia Maria Ponte Vidal
Programação Orientada à Objetos
Linguagem de programação
Estudo dos Conceitos e Paradigmas de Programação
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.
Semântica de Linguagens de Programação
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Linguagem de Expressões 2
Classes, Objetos, Atributos e Métodos JAVA
Concorrência e Java RMI
DI UFPE Sistema de Tipos de Eiffel A Proposal for Making Eiffel Type-safe W. R. Cook ECOOP’87 Proceedings Cambridge University Press, 1989.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Orientação a Objetos Parte I
Marcio de Carvalho Victorino
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Excepções Conceito de Excepção A classe Exception
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
© Ricardo Pereira e Silva
Analise Semântica aula-10-analise-semântica.pdf.
Aula Prática 1 Monitoria IP/CC (~if669). Verificação Dinâmica de Tipos Métodos de superclasses e subclasses: Uso de métodos de subclasses quando se é.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Introdução às Java Threads
Removing Unnecessary Synchronization in Java Sérgio Soares Gente.
Integração de Ferramentas CASE
DI UFPE Semântica de Java Visão Geral de Trabalhos Existentes.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Semântica de Linguagens de Programação
Conceitos de Orientação a Objetos zConceito de tipo zTipos Abstratos de Dados zMódulos/Pacotes zEncapsulamento.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
Semântica em Linguagens de Programação Semântica Denotacional
Sistemas Distribuídos Prof. Marcus Rodrigues
MATA56 Tipos, Verificação de Tipos Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave – nomes.
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

DI UFPE Semântica de Java Towards na Operational Semantics and Proof of Type Soundness for Java Sophia Drossopoulou e Susan Eisenbach Imperial College

DI UFPE Introdução n Por que uma semântica para Java? u Introdução de características novas u Combinação de características u Semântica de uma linguagem de programação real u Qualquer questão pode ser respondida pelo LRM. No entanto... l Algumas regras são mais restritivas do que o necessário l A justificativa para algumas decisões de projeto não é obvia

DI UFPE Subconjunto Considerado n Tipos primitivos n Classes e herança n Variáveis e métodos de instância n Interfaces n “Dynamic binding” n Criação de objetos n Arrays n Exceções

DI UFPE Abordagem n Programas em Java usam informações de tipo em tempo de execução  Invocação de método: attr.meth u Compilação l Três passos l Resolução de “overloading” u Execução l Cinco passos l Resolução de “dynamic binding”

DI UFPE Abordagem n Compilação u Primeiro passo l Identificação da classe ou interface a ser pesquisada Tipo declarado de attr  Segundo passo: determinação da assinatura de meth l Localização dos métodos aplicáveis e acessíveis O mais específico é escolhido u Terceiro passo l Verificação da adequabilidade do método l Associação de informações colhidas durante a compilação

DI UFPE Abordagem u Execução: cinco passos l Primeiro passo u Determinação da referência alvo  Valor da expressão attr l Segundo passo: avaliação de argumentos l Terceiro passo: verificação de que tudo continua consistente em tempo de ligação l Quarto passo u Determinação do método a ser invocado u “Dynamic method lookup” l Quinto passo: execução propriamente dita

DI UFPE Um Exemplo class Phil {class FrPhil extends Phil { Truth like; Food like; Phil think(Phil y){... } Phil think(Phil y){like = oyster;...} Book think(FrPhil y) {...}} } Phil aPhil; FrPhil pascal = new FrPhil;... aPhil.like... aPhil.think(pascal)... aPhil.think(aPhil)... pascal.like... pascal.think(pascal)... pascal.think(aPhil)

DI UFPE Abordagem n Definição de três linguagens u Java s : subconjunto de Java u Java se : enriquecimento da linguagem com informação de tempo de compilação u Java r : linguagem contendo os termos de tempo de execução

DI UFPE Abordagem n Semântica operacional u Relação de transição ternária Configurações, programas, configurações u Configuração l Tuplas de termos-Java r e estados l Termos: parte do programa original que ainda precisa ser executado l Estado: mapeamento u Endereços para objetos u Variáveis para valores primitivos ou endereços

DI UFPE Java s Sintaxe n Definição da sintaxe u Subconjunto de Java u página 6 u Relação de subclasse derivada do programa: página 6

DI UFPE Java s Ambiente n Definição: página 7 u Hierarquias de interface e classe e informações de tipo u Relacionados com programas mais a frente n Um ambiente determina várias relações e informações u Página 8 l Relação de subclasse l Relação de subinterface l Relação de implementação entre uma classe e uma interface

DI UFPE Java s u Página 9: tipos de variáveis e de métodos válidos u Página 10: Relação de “widening” (subtipo) n Ambientes e declarações bem-formadas: página 13 u Restrições de Java sobre declarações u  |-  ‘  :  ‘ é bem formado sob  l Relações de subclasse e subinterface de  ‘ são acíclicas l Declarações de  ‘ são bem-formadas

DI UFPE Java se n Incorpora informações de tempo de compilação n Sintaxe: página 16 n Tradução de Java s para Java se

DI UFPE Java s Tipos e Tradução n Regras de tipo u Fase de verificação de tipos de um compilador u Termos  |- t : T u Programas  |- p  (formação)  |- p  (formação e completude) n Tradução C{( , t)} = t’ n Páginas 18, 20 e 21

DI UFPE Java se Tipos n Necessários apenas para prova da consistência do sistema de tipos n Quatro casos a considerar: página 23 n Um termo Java se resultante de um termo Java s bem-tipado é bem-tipado também e tem o mesmo tipo

DI UFPE Java r n Incorpora termos que surgem em tempo de execução u Endereços u Null u Comandos como expressões n Sintaxe: página 25

DI UFPE Java r Tipos n Necessários apenas para prova da consistência do sistema de tipo

DI UFPE Semântica Operacional n Estrutura geral: página 26 n Definições: páginas 28-32