Eiffel
| Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей.
|
| Класс языка: | |
|---|---|
| Появился в: |
1986 г. |
| Автор(ы): |
Bertrand Meyer |
| Последняя версия: | |
| Типизация данных: | |
| Основные реализации: |
EiffelStudio, SmartEiffel, Visual Eiffel, Gobo Eiffel[1], "The Eiffel Compiler" tecomp[2] |
| Испытал влияние: | |
| Повлиял на: |
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
Ссылки
- http://www.elj.com/
- http://www.cetus-links.org/oo_eiffel.html
- http://www.eiffel.com/
- news://comp.lang.eiffel/
- Документация Эйфель на русском
Основные языки программирования (список • сравнение • IDE • история • хронология) |
|
|---|---|
| Используемые в разработке |
Ада • АПЛ • Ассемблер • ActionScript • ABAP/4 • AutoIt • AWK • BASIC • C • Кобол • C++ • C# • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • F# • Forth • Фортран • Gambas • Groovy • Haskell • Icon • Java • JavaScript • Limbo • Lua • MATLAB • Object Pascal • Objective-C • OCaml • Oz • Оберон • Parser • Паскаль • Perl • PHP • PowerBASIC • PureBasic • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic • VB.NET |
| Академические | |
| IEC61131-3 |
Instruction List • ST • FBD • Ladder Diagram • SFC |
| Прочие | |
| Эзотерические | |
<imagemap>
Image:Wiki_letter_w.svg
|
Для улучшения этой статьи желательно?:
|
Стандарты Ecma International |
|
|---|---|
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 и ещё....