Объектно – ориентированные языки программированияРефераты >> Программирование и компьютеры >> Объектно – ориентированные языки программирования
Известны пять выпусков языка 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 имеет расширения с протоколом метаобъектов, реализующих этот механизм .
Абстракции |
Переменные экземпляра Методы экземпляра Переменные класса Методы класса |
Да Да Да Да |
Инкапсуляция |
Переменных Методов |
Чтение, запись, доступ Открытые |
Модульность |
Разновидности модулей |
Пакет |
Иерархии |
Наследование Шаблоны Метаклассы |
Множественное Нет Да |
Типизация |
Сильная типизация Полиморфизм |
Возможна Да (множественный) |
Параллельность |
Многозадачность |
Да |
Сохраняемость |
Долгоживущие объекты |
Нет |