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

Коротко: <source lang="eiffel"> class HELLO

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

end </source> Или развернуто: <source lang="eiffel"> 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

</source>

Примеры кода

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

<source lang="eiffel"> class КВАДРАТ

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

end </source>

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

<source lang="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 </source>

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

<source lang="eiffel">

 complex_num: COMPLEX

</source>

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

<source lang="eiffel">

 create complex_num.initComplex(2.4, −3.2)

</source>

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

<source lang="eiffel"> !!complex_num.initComplex(2.4, −3.2); </source>

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

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

<source lang="eiffel"> deffered class FIGURE

 -- тело класса

end </source>

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

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

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

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

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

<source lang="eiffel"> from условие на начало until условие на окончание loop

 тело цикла

end </source>

При программировании на 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

Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....