• Características de Linguagens de Programação •Apresentação da Linguagem EIFFEL Aluno Rafael Menezes Lopes Professor João Araújo 2009/2 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. HISTÓRICO 1/3 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. HISTÓRICO 2/3 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. HISTÓRICO 3/3 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. 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). EXEMPLO A INTERFACE COM OUTRAS LINGUAGENS DESIGN BY CONTRACT 1/3 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 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 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. " 2/3 DESIGN BY CONTRACT 3/3 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. " 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. RESUMO DE SINTAXE Condicional Laços 1/4 RESUMO DE SINTAXE Rotina Funções 2/4 RESUMO DE SINTAXE Atributos (variáveis e Constantes) 3/4 RESUMO DE SINTAXE Criação de Objetos Projeto por Contrato 4/4 HELLO WORLD 2/2 99 BOTTLES OF BEER 1/2 EXEMPLO B APENDICE A 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/