Смекни!
smekni.com

Объектно-ориентированные языки програмирования (стр. 5 из 5)

лать как можно больше в рамках первого класса Object System (объект п

вый класс - это объект, который можно явно создать и работать с ним); же

ние избавиться от сложного поведения для упрощения понятий и их объяснений; сделать спецификацию языка как можно более точной [DeMichiel and Gabriel 1987]. Основные средства CLOS:

три слоя языка: интерфейс для объектно-ориентированного прогр

мирования, функциональный интерфейс для Object System, и инст

менты, позволяющие программисту создавать свои собственные о

ектно-ориентированные языки;

использование обобщенных функций вместо посылки сообщений; при таком подходе объекты и функции являются анонимными объ

тами: ни один из них не является с

ственностью другого;

поддержка множественного наследования: список старшинства кл

сов используется для решения потенциальных конфликтов между

следуемой структурой и поведением; средство комбинации методов для получения значений обобщенной функции - задание способа к

бинации методов, применимых к набору аргументов (в результате множественного нас

дования);

гарантия, что обобщенные функции и классы являются объектами первого класса (т.е. они могут храниться в любом месте, где разре

но хранение обобщенных объ

тов).

Delphi Common Lisp

Delphi - это итальянская фирма, считающая себя первой в реализации стандарта для CLOS. Последний выступает как часть продукта Delphi Common Lisp (DCL), основанного на расширенной версии Kyoto Common Lisp.

Разработано три расширения CLOS:

поддержка традиционных систем;

поддержка постоянной памяти;

поддержка параллельности.

Allegro Common Lisp

Allegro CL - это реализация Common Lisp, разработанная и выставленная на рынок фирмой Franz Inc на широком наборе аппаратуры. В настоящее время он включает объектно-ориентированные расширения для поддержки Flavors и Portable CommonLoops. Поддержка стандарта CLOS буде реали

вана как только он станет доступным.

ExperCommon Lisp

ExperTelligence разрабатывает и выставляет на рынок объектно - ори

тированное расширение ExperLisp для Macintosh. Поддерживае

Macintosh Toolbox и MacApp.

2.5. EIFFEL

Язык

Eiffel - это запатентованный язык, разработанный и продаваемый ф

мой Interactive Software Engineering. Его разработка велась под влиянием объектно-ориентированных понятий языка Симула, объединенных с синт

сисом языка Ада и современными методами технологии программирования. Кроме поддержки классов и наследования, Eiffel вводит ряд новых средств:

утверждения для выражения формальных свойств классов: это могут быть

p

condition

,

postcondition

или

invariant

;

обобщенные параметры для представления типов в объявлениях классов;

средство rename для поддержки множественного наследования р

решением конфликтов имен в случае, когда у класса более одного

дителя;

средство переопределения в нижестоящих классах, позволяющее осуществлять динамическое связывание вопреки статической пров

ки типов;

отложенные программы, реализация которых находится только в нижних кл

сах.

Размещение и освобождение памяти осуществляется системой времени выполнения, включающей пошаговый сборщик мусора. Есть интерфейс с другими языками с помощью понятия external, выдающего список каждой внешней подпрограммы, используемой в программе.

Среда

Система Eiffel состоит из компилятора и набора инструментальных средств. Они содержат средства автоматической конфигурации, отладки, проверки утверждения во время работы программы, документирования,

тимизирующий постпроцессор и библиотеку базовых классов для общих структур данных (списков, деревьев, стеков, хэш-таблиц). Постпроцессор может генерировать отдельный пакет на Си, который можно использовать для поставки на системы, не поддерживающие Eiffel.

2.6. ЯЗЫКИ, ОСНОВАННЫЕ НА ПАСКАЛЕ

2.6.1. ACTOR

Actor - это объектно-ориентированные язык и среда, основанные на П

кале и работающие под Microsoft Windows. Он соединяет систему управ

ния динамической памятью и автоматическую сборку мусора. Actor был с

дан группой Whitewater Group. Он используется для создания отдельных прикладных задач для Windows, которые можно скомпоновать с существ

щими программами на

Microsof

.

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.

Список литературы

1. А. Г. Иванов «Объектно-ориентированные системы: Состояние и перспективы», Москва 1992 г.
2. Подбельский В.В. Язык С++. – М.:Финансы и статистика, 1996.

3. Объектно-ориентированные языки программирования, [http://www.citforum.ru/win/programming/oop_rsis/glava1_2.shtml]

4. Объектно-ориентированное программирование, (http://www.object.newmail.ru/index.html)