JavaCO – uma variante do Java com um sistema de tipos baseado em covariância


Autoria(s): Martins, Duarte João Figueira
Contribuinte(s)

Dias, Artur Miguel Andrade Vieira

Data(s)

14/12/2010

14/12/2010

2010

Resumo

Dissertação apresentada na Faculdade de Ciências e Tecnologia da Universidade Nova de Lisboa para obtenção do grau de Mestre em Engenharia Informática

Quando se compara a linguagem Eiffel com a linguagem Java, a diferença com mais impacto no estilo de programação é o facto de a primeira permitir métodos com argumentos covariantes, isto é, permitir a especialização do tipo dos argumentos à medida que se desce na hierarquia. Esta possibilidade é uma vantagem porque permite modelar determinados aspectos do mundo real de forma mais directa e intuitiva. Mas também há uma desvantagem que justifica a raridade desta opção na generalidade das linguagens modernas: o facto de criar complicações ao nível da tipificação estática dos programas. O objectivo deste trabalho é criar uma variante do Java, chamada JavaCO, cujo sistema de tipos será baseado em covariância, à imagem do sistema de tipos da linguagem Eiffel. A introdução de um novo tipo genérico “This”, servirá para aumentar a utilidade prática do mecanismo de covariância. Espera-se assim proporcionar uma experiência de programação similar à da linguagem Eiffel, mas num ambiente de programação Java, usando as ferramentas e bibliotecas do Java. A nova linguagem será implementada através da tradução para Java puro. A implementação seguirá as linhas da definição semântica e consistirá num tradutor escrito usando a ferramenta SableCC. O tradutor fará alguma análise estática dos programas de entrada; contudo, os aspectos mais essenciais da nova linguagem serão implementados por recurso a tipificação dinâmica (na mesma linha do Eiffel “clássico”).

Identificador

http://hdl.handle.net/10362/4590

Idioma(s)

por

Publicador

Faculdade de Ciências e Tecnologia

Direitos

openAccess

Palavras-Chave #Linguagens de programação #Sistema de tipos #Covariância #Compilação
Tipo

masterThesis