Объектно-ориентированные языки програмированияРефераты >> Программирование и компьютеры >> Объектно-ориентированные языки програмирования
частичная интеграция системы типа Common Lisp с классами CommonLoops;
использование синтаксиса обобщенных функций вместо посылки сообщений;
способность определять методы, различающиеся не только по первому аргументу ( так называемые мультиметоды);
поддержка реализации других объектно-ориентированных языков с помощью ядра метаклассов, набора предопределенных классов, составляющих оставшуюся часть системы.
Опытная реализация, названная Portable CommonLisp (PCL), распространена для небольшого сообщества пользователей. Она используется в Hewlett-Packard Laboratories для реализации другого объектно - ориентированного языка - CommonObjects [Kempf, Harris, D'Souza and Snyder 1987].
New Flavors
Flavors -
эт
расширени
MacLisp/ZetaLisp. Это система посылки сообщений, используемая в коммерческих целях фирмами Symbolics и TI Explorers. New Flavors - это производная от Flavors, совместимая с ней, но использующая синтаксис обобщенных функций.
Common Lisp Object System (CLOS)
В 1986 г. группы с фирм Xerox PARC и Symbolics, а также группа с фирмы Lucid, начала работу над проектом спецификации для CLOS, представленный на рассмотрение технической рабочей группе Ansi, X3J13. Эта спецификация одобрена для вероятного принятия в качестве части развивающегося стандарта Common Lisp. Цели CLOS: использование набора уровней для независимых друг от друга действий языка программирования; сделать как можно больше в рамках первого класса 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 был создан в Министерстве Обороны США для использования во встроенных компьютерных системах. Его использование обязательно в государственных контрактах в некоторых областях как в США, так и в Великобритании. Благодаря этому такие системы являются естественными прикладными задачами для объектно - риентированных понятий: значительные усилия были затрачены на доказательство того, что Ада поддерживает ООС.