2.5. EIFFEL
Язык
Eiffel - это запатентованный язык, разработанный и продаваемый фирмой Interactive Software Engineering. Его разработка велась под влиянием объектно-ориентированных понятий языка Симула, объединенных с синтаксисом языка Ада и современными методами технологии программирования. Кроме поддержки классов и наследования, Eiffel вводит ряд новых средств:
утверждения для выражения формальных свойств классов: это могут быть preconditions, postconditions или invariants;
обобщенные параметры для представления типов в объявлениях классов;
средство rename для поддержки множественного наследования разрешением конфликтов имен в случае, когда у класса более одного родителя;
средство переопределения в нижестоящих классах, позволяющее осуществлять динамическое связывание вопреки статической проверки типов;
отложенные программы, реализация которых находится только в нижних классах.
Размещение и освобождение памяти осуществляется системой времени выполнения, включающей пошаговый сборщик мусора. Есть интерфейс с другими языками с помощью понятия external, выдающего список каждой внешней подпрограммы, используемой в программе.
Среда
Система Eiffel состоит из компилятора и набора инструментальных средств. Они содержат средства автоматической конфигурации, отладки, проверки утверждения во время работы программы, документирования, оптимизирующий постпроцессор и библиотеку базовых классов для общих структур данных (списков, деревьев, стеков, хэш-таблиц). Постпроцессор может генерировать отдельный пакет на Си, который можно использовать для поставки на системы, не поддерживающие Eiffel.
2.6. ЯЗЫКИ, ОСНОВАННЫЕ НА ПАСКАЛЕ
2.6.1. ACTOR
Actor - это объектно-ориентированные язык и среда, основанные на Паскале и работающие под Microsoft Windows. Он соединяет систему управления динамической памятью и автоматическую сборку мусора. Actor был создан группой Whitewater Group. Он используется для создания отдельных прикладных задач для Windows, которые можно скомпоновать с существующими программами на Microsoft C.
2.6.2. OBJECT PASCAL
Object Pascal - это объектно-ориентированное расширение Паскаля, разработанное Н. Виртом совместно с командой с фирмы Apple. Классы (типы) реализованы как расширение паскалевской структуры RECORD. В Object Pascal они могут содержать как поля данных, так и поля методов. Методы определяются как процедуры или функции Паскаля, определяемые по имени класса. Сообщения посылаются с помощью обычных конструкций Паскаля для определения поля.
Object Pascal использовался для внутренних разработок фирмы Apple. Библиотека классов Object Pascal составляет основу интегрированной системы разработки прикладных программ MacApp. Язык свободно распространяется [Schmucker 1986].
2.7. ЯЗЫКИ, ПОДДЕРЖИВАЮЩИЕ АБСТРАКЦИЮ ДАННЫХ
Раздаются возгласы, что ряд других языков также либо объектно - ориентированные, либо поддерживают объектно-ориентированные понятия. В этом разделе рассматриваются два языка, имеющие существенную поддержку программистов - Modula-2 и Ada, которые сравниваются с вышеприведенными объектно-ориентированными языками. В таблице С2.4 подведены итоги основных средств этих языков и основных коммерческих объектно-ориентированных языков.
2.7.1. ADA
Ada был создан в Министерстве Обороны США для использования во встроенных компьютерных системах. Его использование обязательно в государственных контрактах в некоторых областях как в США, так и в Великобритании. Благодаря этому такие системы являются естественными прикладными задачами для объектно - риентированных понятий: значительные усилия были затрачены на доказательство того, что Ада поддерживает ООС.
Новые типы данных (классы) можно задать в языке Ада как пакеты. Пакет содержит как общую, так и частную информацию. Пользовательский интерфейс задан как спецификация пакета, в то время как реализация задается отдельно в теле пакета, предоставляя эффективный механизм инкапсуляции. Связывание происходит во время компиляции, когда явно проверяются типы всех данных. В пакете можно переопределять операторы, давая новый смысл традиционным операторам типа +. Ада не позволяет типам наследовать информацию или поведение от других типов, хотя есть возможность использовать разновидность наследования - обобщение (genericity), позволяющее экспортировать ограниченное число частных типов и операций.
Ада может использоваться для разработки программ, основанных на объектах. Для проектов в военной и аэрокосмической областях другого выбора и нет. Пользователи, не ограниченные этими областями, могут с удовлетворением отметить, что их требования могут быть выполнены другим объектно-ориентированным языком типа Eiffel.
Таблица С2.4 Сравнение языков программирования
ЯзыкСкрытие
информацииКлассыНаследо-ваниеСвязы-ваниеСборка мусораИнстру- ментарийSimulaдадаедин.стат.нетестьSmalltalk-80 дадаедин.динам.автом.полныйС++дадаедин.*обанетнетObjective-Cдадаедин.*обанетестьEiffelдадаобаобанетестьAdaдаданетстат.нетнетModula-2 данетнетстат.нетнет
* множественное наследование в стадии разработки
2.7.2. MODULA-2
Modula-2, разработанная Н. Виртом, является прямым потомком языков Algol 60 и Pascal, и привлекает многих, обученных на традиции этих языков. Ее ключевое средство - принцип скрытия информации, заключающийся в отделении спецификации модуля от его реализации. Абстрактные типы данных могут быть определены как закрытые типы. Спецификация типа содержится в модуле с определением, который описывает тип данных и процедуры для доступа к нему. Программы, выполняющие эти процедуры, содержатся в модуле реализации. Как и в Аде, такое разделение служит в качестве механизма инкапсуляции. Однако Modula-2 более ограничивает, чем Ада, не разрешая ни переопределение, ни обобщение операций.
Появилось несколько статей, показывающих, как Modula-2 может быть использована для разработки объектно-ориентированных систем. Это требует существенной нагрузки на программиста, поскольку язык не поддерживает объектно-ориентированные средства, описанные в главе B1. Необходимость пользователей языков Algol-Pascal-Modula в средствах ООП могут быть удовлетворены, например, реализацией языка Modula-3, объектно-ориентированного потомка Modula-2, разработанного группой исследовательского центра фирм DEC и Olivetti в Калифорнии [Cardelli et al 1988].
ЗАКЛЮЧЕНИЕ
Ведущие продавцы ПО для персоналок являются активными пользователями объектно-ориентированных языков и средств. Microsoft считается создателем объектно-ориентированных иерархий классов для Word и Excel.
Позиция Microsoft стала ясна после нескольких публикаций и интервью. Компания поддержала объектно-ориентированные расширения существующих языков, включая Basic. Bill Gates также поразил всех заявлением о том, что он не видит будущего за введением новых объектно-ориентированных языков после 1988 г., но ОС будущего должны иметь объектно-ориентированную поддержку: "Вы не поднимите всю глубину прикладных задач, работая только с ними, до тех пор, пока мы не сделаем это внутри ОС" [Byte, 1988]. Это будет достигнуто дополнительными возможностями OS/2.
Практически все объектно-ориентированные языки программирования являются развивающимися языками, их стандарты регулярно уточняются и расширяются. Следствием этого развития являются неизбежные различия во входных языках компиляторов различных систем программирования. Наиболее распространенными в настоящее время являются системы программирования Microsoft C++ , Microsoft Visual C++ и системы программирования фирмы Borland International.
Список литературы
А. Г. Иванов «Объектно-ориентированные системы: Состояние и перспективы», Москва 1992 г.
Подбельский В.В. Язык С++. – М.:Финансы и статистика, 1996.
Объектно-ориентированные языки программирования, [µhttp://www.citforum.ru/win/programming/oop_rsis/glava1_2.shtml§]
Объектно-ориентированное программирование, (µhttp://www.object.newmail.ru/index.html
... быть выведены на печать. На экране рисунки могут быть статическими (неподвижными) или динамическими (движущимися). В последнее время машинная графика выделилась в самостоятельный раздел информатики с многочисленными приложениями. Средствами машинной графики создается не только печатная продукция, но и рекламные ролики на телевидении, мультфильмы. Объясним, как кодируется изображение в памяти ...
... рассмотренного примера Успевающий_Студент и Неуспевающий_Студент является весьма характерным для программирования. В этом смысле записи с вариантами можно рассматривать как форму лаконичного описания типов, позволяющую избавиться от повторов в описании свойств объектов. В объектно-ориентированных языках существует дополнительная возможность такой лаконизации, определяющая полиморфную ...
... общих частей в структурах рассмотренного примера Успевающий_Студент и Неуспевающий_Студент является весьма ха ным для программирования. В этом смысле записи с вариантами мож но рассматривать как форму лаконичного описания типов, поз щую избавиться от повторов в описании свойств объектов. В объектно-ориентированных языках существует дополнительная воз цию объектов не на альтеpнативной основе, а на ...
... 2 >= Y And д + В > С — False, далее д*Х + B*Y = D And ( // <= Y And Y <= Q) - False, последней операция Or. которая лает результат — False. 3.3.3. Символьное выражение В Visual Basic определена одна операция с символьными данными - конкатенация (сцепление), позволяющая объединять несколько строк в одну. Знак операции — “+” или “&”. Операндами символьного выражения могут быть: ...
0 комментариев