Объектно – ориентированные языки программирования
Рефераты >> Программирование и компьютеры >> Объектно – ориентированные языки программирования

Известны пять выпусков языка Smalltalk, обозначаемых по году их появления:

Smalltalk-72, -74. -76, -78, -80. Реализации 1972 и 1974 годов заложили основу языка, в частности идею передачи сообщений и полиморфизм, хотя механизм наследования еще не появился. В последующих версиях полноправное гражданство получили классы; этим достигла завершения точка зрения, что все состоит из объектов. Smalltalk-80 был перенесен на многие компьютерные платформы.

В основу языка положены две простые идеи:

  • все является объектами;
  • объекты взаимодействуют, обмениваясь сообщениями.

В табл.1 приведены характеристики языка Smalltalk с точки зрения семи основных элементов объектного подхода.

Абстракции

Переменные экземпляра Методы экземпляра Переменные класса Методы класса

Да Да Да Да

Инкапсуляция

Переменных Методов

Закрытые Открытые

Модульность

Разновидности модулей

Нет

Иерархии

Наследование Шаблоны Метаклассы

Одиночное Нет Да

Типизация

Сильная типизация Полиморфизм

Нет Да (одиночный)

Параллельность

Многозадачность

Непрямая (посредством классов)

Сохраняемость

Долгоживущие объекты

Нет

Таблица 1. Smalltalk. [1]

Большим недостатком Smalltalk являются большие требования к памяти и низкая производительность полученных программ. Это связано с не очень удачной реализацией объектно-ориентированных особенностей.

C++

Язык программирования C++ был разработан Бьерном Страуструпом, сотрудником AT&T Bell Laboratories. Непосредственным предшественником C++ является С with Classes, созданный тем же автором в 1980 году. Язык С with Classes, в свою очередь, был создан под сильным влиянием С и Simula. C++ - это в значительной степени надстройка над С. В определенном смысле можно назвать C++ улучшенным С, тем С, который обеспечивает контроль типов, перегрузку функций и ряд других удобств. Но главное в том, что C++ добавляет к С объектную ориентированность.

Известны несколько версий C++. В версии 1.0 реализованы основные механизмы объектно-ориентированного программирования, такие как одиночное наследование и полиморфизм, проверка типов и перегрузка функций. В созданной в 1989 году версии 2.0 нашли отражение многие дополнительные свойства, возникшие на базе широкого опыта применения языка многочисленным сообществом пользователей. В версии 3.0 (1990) появились шаблоны и обработка исключений. C++ продолжает совершенствоваться и в настоящее время, так в 1998 году вышла новая версия стандарта, содержащая в себе некоторые довольно существенные изменения. Язык стал основой для разработки современных больших и сложных проектов.

Характеристики C++ приведены в табл. 3.

Абстракции

Переменные экземпляра Методы экземпляра Переменные класса Методы класса

Да Да Да Да

Инкапсуляция

Переменных Методов

Открытые, защищенные, закрытые Открытые, защищенные, закрытые

Модульность

Разновидности модулей

файл

Иерархии

Наследование Шаблоны Метаклассы

Множественное Да Нет

Типизация

Сильная типизация Полиморфизм

Да Да (одиночный)

Параллельность

Многозадачность

Непрямая (посредством классов)

Сохраняемость

Долгоживущие объекты

Нет

Таблица 3. C++. [1]

Common Lisp Object System (CLOS)

В начале 80-х годов под воздействием идей объектно-ориентированного программирования возникла серия новых диалектов Lisp, многие из которых были ориентированы на представление знаний. Успех в стандартизации Common Lisp стимулировал попытки стандартизировать объектно-ориентированные диалекты в 1986 году.

Поскольку новый диалект должен был стать надстройкой над Common Lisp, он получил название Common Lisp Object System (Объектная система Common Lisp) или, сокращенно, - CLOS. Серьезное влияние на проект CLOS оказали языки NewFlavors и CommonLoops. После двухлетней работы, в 1988 году была опубликована полная спецификация CLOS.

CLOS должен:

  • представлять собой стандартное расширение языка, включающее все наиболее полезные свойства существующей объектно-ориентированной парадигмы;
  • обеспечить эффективный и гибкий интерфейс программиста, позволяющий реализовать большинство прикладных задач;
  • проектироваться как расширяемый протокол, так, чтобы можно было изменять его поведение, тем самым стимулируя дальнейшие исследования в области объектно-ориентированного программирования .

Обзор характеристик CLOS можно найти в табл. 4.

Не поддерживая непосредственно механизм долгоживущих объектов, CLOS имеет расширения с протоколом метаобъектов, реализующих этот механизм .

Абстракции

Переменные экземпляра Методы экземпляра Переменные класса Методы класса

Да Да Да Да

Инкапсуляция

Переменных Методов

Чтение, запись, доступ Открытые

Модульность

Разновидности модулей

Пакет

Иерархии

Наследование Шаблоны Метаклассы

Множественное Нет Да

Типизация

Сильная типизация Полиморфизм

Возможна Да (множественный)

Параллельность

Многозадачность

Да

Сохраняемость

Долгоживущие объекты

Нет


Страница: