Eiffel

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск
Eiffel
Класс языка:

объектно-ориентированный

Появился в:

1986 г.

Автор(ы):

Bertrand Meyer

Последняя версия:

4.2 (6 февраля 1998)

Типизация данных:

строгая, статическая

Основные реализации:

EiffelStudio, SmartEiffel, Visual Eiffel, Gobo Eiffel[1], "The Eiffel Compiler" tecomp[2]

Испытал влияние:

Ada, Simula, Z

Повлиял на:

C#, D, Java, Lisaac, Ruby, Sather

Eiffel (Эйфель) — объектно-ориентированный язык программирования с алголоподобным синтаксисом, разработанный Бертраном Мейером.

Программы на Эйфеле работают в MS Windows, DOS, OS/2 и UNIX.

Большинство реализаций Eiffel генерирует код Си, то есть являются своеобразным препроцессором. Далее этот код компилируется с помощью компилятора Си.

Содержание

"Hello, world!" на Eiffel

Коротко:

class HELLO
    creation make
    feature make is
        do print("Hello World%N") end
end

Или развернуто:

indexing 
  description: "Программа Здравствуй,мир!" 
  author: "Elizabeth W.Brown"
class 
  HELLO 
creation    
  make
feature
  make is
    -- печать простого сообщения         
    do      
      io.put_string ("Hello World")
      io.put_new_line
    end
 end -- class HELLO

Примеры кода

Пример объявления класса на Eiffel:

class КВАДРАТ
  inherit ПРЯМОУГОЛЬНИК
  creation
    --заголовки конструкторов
  feature
    --свойства, описываемые здесь, являются видимыми для клиентов и подклассов
  feature {child}
    --свойства, описываемые здесь, являются скрытыми для клиентов, но видимыми для подклассов
  feature {none}
    --свойства, описываемые здесь, являются скрытыми для клиентов и подклассов
end

где свойства — это общее название полей и методов. То есть атрибутов (attributes) и подпрограмм (routines) в терминологии Eiffel. Подпрограммы в подклассах могут замещать наследуемые только при совпадении их сигнатур. Ещё пример:

class COMPLEX
  creation
  initComplex
  feature
    real_part, imag_part: REAL
  feature
    initComplex(r, i: REAL) is
      do
        real_part := r
        imag_part := i
      end
end --class COMPLEX

Ссылка определяется обычно:

  complex_num: COMPLEX

Инициализация объекта (вызов конструктора):

  create complex_num.initComplex(2.4, −3.2)

Иногда используется замена слова create на такое:

!!complex_num.initComplex(2.4, −3.2);

В языке Eiffel нет деструкторов — задействуется сборка мусора, когда на объект нет ссылок.

Язык Eiffel поддерживает множественное наследование (несколько разделов inherit ). Абстрактные классы определяются добавлением зарезервированного слова deferred («отложенный»):

deffered class FIGURE
  -- тело класса
end

«Отложенные» свойства должны содержать определения в «неотложенных» потомках «отложенного» класса.

Самым характерным свойством языка Eiffel является встроенные утверждения для создания принудительного контракта между вызывающим оператором и вызываемым кодом подпрограмм (см. также протоязык Plankalkül).

Все связывания сообщений (здесь: «сообщение» — метафора ООП, проявляющая себя в вызове метода объекта) в языке Eiffel динамические. В первоначальной версии языка все объекты размещались в динамической памяти, и доступ к ним осуществлялся с помощью ссылок. Компиляторы с Eiffel были дороги и не так распространены как компиляторы C/C++, что, в своё время, и ограничило распространение этого языка.

Стиль оформления программ на Eiffel

Язык Eiffel спроектирован с максимальным уклоном в простоту конструкций языка. Так, в нем определена лишь одна конструкция для цикла.

from ''условие на начало''
until ''условие на окончание''
loop
  тело цикла
end

При программировании на Eiffel хорошим тоном считается придерживаться определённых строгих правил оформления. Благодаря этому, исходники читаются так, как если бы это была документация. Дополнительным стимулом соблюдать правила, является строгость самих компиляторов к оформлению. Многие из них (в частности SmartEiffel) не позволяют неправильно оформлять исходные коды, находя многие отступления от стиля, отказываясь компилировать и выводя предупреждения.

Вот некоторые рекомендации по оформлению исходников:

  • в отличие от C++, в Eiffel отрицательно относятся к сокращениям.
Вместо drvMngr принято писать driver_manager
  • все классы пишутся прописными буквами
class LIST
  • переменные пишутся строчными буквами
item_1 : INTEGER
  • константы всегда начинаются с прописной
Universal_G : REAL is 9.81
  • рекомендуется использовать немоноширинный шрифт
  • служебные слова набираются жирным
  • все идентификаторы — курсивом
  • в начале каждого класса желательно вставлять информацию о нем: кто написал, когда, функциональность класса. Вся эта информация записывается в самом начале файла с классом.

indexing
 description:"Класс что-то должен делать"
 author: "Вася Пупкин"
class КЛАСС
      --тело класса
end

  • после названия каждой процедуры на следующей строке желательно описывать результат её действия:

feature IP: INTEGER is
  -- возвращает IP адрес локальной машины
do
   -- тело запроса
end

  • особенностью Eiffel является необязательность точки-запятой «;» в конце каждой строки.

Примечания

Литература

  • Bertrand Meyer. Object-Oriented Software Construction. 2nd edition, Prentice Hall, 1997.
  • Bertrand Meyer. Eiffel: The Language
  • Invitation to Eiffel. From ISE.
  • Richard Paige. An Overview of Eiffel
  • Jean-Marc Jezequel. Object-Oriented Software Engineering with Eiffel

Ссылки

an:Luengache de programazión Eiffel

cs:Eiffel da:Eiffel (programmeringssprog) de:Eiffel (Programmiersprache) en:Eiffel (programming language) eo:Eiffel (programlingvo) es:Lenguaje de programación Eiffel fi:Eiffel (ohjelmointikieli) fr:Eiffel (langage) gl:Linguaxe de programación Eiffel hu:Eiffel (programozási nyelv) it:Eiffel (linguaggio) ja:Eiffel ka:ეიფელი (პროგრამირების ენა) nl:Eiffel (programmeertaal) pl:Eiffel (język programowania) pt:Eiffel (linguagem de programação) sk:Eiffel (programovací jazyk) uk:Eiffel

Источник — «http://www.sbup.com/wiki/Eiffel»
Личные инструменты

Served in 0.885 secs.