características de linguagens de programação aluno rafael menezes lopes professor joão araújo...

23
Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

Upload: internet

Post on 18-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

• Características de Linguagens de Programação

Aluno Rafael Menezes Lopes

Professor João Araújo

2009/2

•Apresentação da Linguagem EIFFEL

Page 2: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

INTRODUÇÃO

Eiffel é uma linguagem puramente orientada a objetos que enfatiza o projeto e construção de software reusável e de alta qualidade .

Eiffel tem sintaxe muito simples e clara, bastante similar ao PASCAL e ALGOL.

Eiffel tem um tipo único de dados - todos os tipos são classes - então é possível criar subclasses de classes básicas como a classe "INTEGER". A linguagem se propõe a ser de uso geral, podendo ser usada para desenvolvimento de aplicações financeiras, indústria, sistemas de telecomunicações, etc.

Eiffel é a única linguagem a apresentar um inovador conceito, “Projeto por Contrato”. será discutido adiante.

Page 3: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

HISTÓRICO

A linguagem Eiffel foi concebida pela Eiffel Software (até então conhecida como ISE) em 1985, inicialmente como uma ferramenta interna para desenvolver diversas aplicações próprias. Os engenheiros de software da Eiffel necessitavam de um poderoso ambiente para integrar os modernos conceitos da engenharia de software e orientação a objetos e não havia simplesmente nada disponível.

Por esta razão, o Dr. Bertrand Meyer, fundador da Eiffel Software, concebeu o compilador Eiffel 1. Ele foi apresentado ao público na primeira The International Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA) em outubro de 1986, onde ele atraiu considerável atenção, levando o Dr. Meyer a divulgá-lo como um produto comercial, no final de 1986.

1/3

Page 4: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

HISTÓRICO

A tecnologia se espalhou rapidamente ao longo dos anos seguintes, com um histórico de sucesso em diversos projetos industriais nos EUA, Canadá, Europa e Extremo Oriente. Logo no início, Eiffel também atraiu a atenção da comunidade acadêmica como uma ferramenta ideal para o ensino de programação em todos os níveis. Várias universidades de todo o mundo a têm usado no ensino primário de linguagens de programação.

As sucessivas versões do ambiente surgiam em média de uma vez por ano. Eiffel tornou-se objeto de maior visibilidade com a publicação, em 1988, do livro Object-Oriented Software Construction pelo Dr. Bertrand Meyer, que rapidamente se tornou um best-seller e foi traduzido para oito línguas, o livro utiliza Eiffel para explicar e ilustrar os conceitos fundamentais de orientação a objeto e Design by ContractTM.

2/3

Page 5: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

HISTÓRICO

A última iteração envolvendo a tecnologia original do Eiffel foi a versão 2.3, lançada em meados de 1990. A próxima versão, Eiffel 3, foi escrito inteiramente em Eiffel. Eiffel 3 apresenta o Melting Ice Technology para recompilação rápida, um ambiente gráfico com interface totalmente inovadora para o usuário, com base em conceitos e avanços consideráveis em bibliotecas (gráficos, rede…) e otimização do código gerado. As primeiras versões foram lançadas em Unix e seguido pelo Linux, VMS, OS / 2, Windows (Windows 3.1, Windows 95, Windows NT). NET, e Mac OS X.

Hoje, a tecnologia Eiffel continua a empurrar as fronteiras do desenvolvimento de software. Com a introdução do EiffelStudio TM, os programadores podem tirar partido de uma IDE eficiente – em todas as principais plataformas. Com EiffelEnvision TM, os programadores podem ainda usar o poder da linguagem Eiffel dentro do popular ambiente do Microsoft Visual Studio. NET.

3/3

Page 6: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

CARACTERÍSTICAS DA LINGUAGEM

Linguagem puramente orientada a objetos;

Definição única de dados: a Classe;

Projeto por Contrato;

Gerenciamento de memória automática, normalmente implementado por coleta de lixo (garbage collection);

Herança, incluindo herança múltipla;

Tipagem Estática (em tempo de compilação);

Separador-livre, a medida em que pontos e vírgulas são opcionais;

Não é case sensitive (não diferencia maiúsculas de minúsculas).

Page 7: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

EXEMPLO A

Page 8: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

INTERFACE COM OUTRAS LINGUAGENS

Page 9: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

Texto retirado do site da Eiffel Software:

"Um conceito revolucionário para se fazer softwares confiáveis, introduzido pela Eiffel e apenas implementada na Eiffel. A idéia básica é que para fazer software confiável não é suficiente ser "cuidadoso" e utilizar todo tipo de checagem ao longo do código. Uma abordagem

mais sistemática é essencial. Através do conceito de projeto por contrato, você enxerga seu sistema como feito de um número de componentes complementares - as classes em Eiffel - os quais cooperam baseados em declarações precisas de obrigações e

benefícios mútuos: contratos, assim como contratos entre cliente e empresa. Eiffel obriga diretamente o projeto por contrato através de construções como class invariants , pré-condições e pós-condições.

DESIGN BY CONTRACT 1/3

Page 10: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

Admita, por exemplo, que nós queremos que nossos contadores sejam sempre não-negativos. A classe terá agora uma invariante

indexing ... class COUNTER

feature ...

invariant item >= 0

end

e a feature decremento agora necessita de uma pré-condição, para certificar-se de que o cliente não realiza uma operação ilegal.

DESIGN BY CONTRACT

Page 11: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

A palavra-chave require inicia a pré-condição.

decrement is -- Decrease counter by one

require item > 0

do item := item -1

ensure item = old item -1

end.

-- old "item" representa o valor de "item" antes do método ser chamado. A palavra-chave ensure inicia a pós-condição.

"

DESIGN BY CONTRACT 2/3

Page 12: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

A pré-condição diz ao cliente:"Nem pense em me chamar a se não tiver absoluta certeza de que

counter é estritamente positivo"

A pós-condição diz: "Se você for um bom garoto (cumpriu a pré-condição), aqui está o

que eu prometo fazer para você quando retornar: eu irei decrementar counter em uma unidade.”

Pré-condições, pós-condições e invariantes são chamadas asserções. "

DESIGN BY CONTRACT 3/3

Page 13: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

ASSERÇÕES

Segundo a Sun: "Uma asserção é um comando contendo uma expressão booleana que o programador acredita ser verdadeira no momento que o comando é executado". Ou seja, a asserção é um recurso da linguagem para testar as suposições feitas pelo programador dentro do código. Verificação de Asserções:Asserções como pré e pós-condições tem um primeiro papel de documentar o método.

A verificação de asserções pode ser habilitada em tempo de execução. Se uma asserção não é satisfeita, então:

• Se for uma pré-condição, o cliente do método possui uma falha. • Se for uma pós-condição, o método provedor é falho.

A asserção favorece em muito a confiabilidade de um programa, devido as suas prés e pós-condições.

Page 14: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

RESUMO DE SINTAXE

Condicional

Laços

1/4

Page 15: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

RESUMO DE SINTAXE

Rotina

Funções

2/4

Page 16: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

RESUMO DE SINTAXE

Atributos (variáveis e Constantes)

3/4

Page 17: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

RESUMO DE SINTAXE

Criação de Objetos

Projeto por Contrato

4/4

Page 18: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

HELLO WORLD 2/2

Page 19: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

99 BOTTLES OF BEER 1/2

Page 20: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL
Page 21: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

EXEMPLO B

Page 22: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

APENDICE A

Page 23: Características de Linguagens de Programação Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 Apresentação da Linguagem EIFFEL

BIBLIOGRAFIA

SITES:

http://www.eiffel.com

http://pt.wikipedia.org/wiki/Eiffel_(linguagem_de_programa%C3%A7%C3%A3o)

http://www.jvoegele.com/software/langcomp.html

http://wapedia.mobi/pt/Eiffel_(linguagem_de_programa%C3%A7%C3%A3o)

http://www.infor.uva.es/~felix/priii/sintaxis.html

http://linguagemeiffel.wordpress.com/