Обзор
Как пишет Ингалс: "Цель проекта Smalltalk - сделать мир информации доступным для детей любого возраста. Вся трудность состоит в том, чтобы найти и применить достаточно простые и эффективные метафоры, которые позволят человеку свободно оперировать самой разнообразной информацией от чисел и текстов до звуковых и зрительных образов" [5]. В основу языка положены две простые идеи:
• все является объектами;
• объекты взаимодействуют, обмениваясь сообщениями.
В табл. А-1 приведены характеристики языка Smalltalk с точки зрения семи основных элементов объектного подхода. Множественное наследование в принципе может быть реализовано за счет переопределения некоторых методов-примитивов [6].
Абстракции Переменные экземпляра Методы экземпляра Переменные класса Методы класса Да Да Да Да
Инкапсуляция Переменных Методов Закрытые Открытые
Модульность Разновидности модулей Нет
Иерархии Наследование Шаблоны Метаклассы Одиночное Нет Да
Типизация Сильная типизация Полиморфизм Нет Да (одиночный)
Параллельность Многозадачность Непрямая (посредством классов)
Сохраняемость Долгоживущие объекты Нет
Таблица А-1. Smalltalk.
Пример
<пример пропущен>
Ссылки
Основными руководствами по языку Smalltalk являются книги "Smalltalk-80:
The Language", Голдберг и Робсон [7]; "Smalltalk-80: The Interactive Programming Environment", Голдберг [8]; "Smalltalk-80: Bit of History Words of Advice", Kpacнер, [9]. ЛаЛонд и Пух [10] подробно исследуют Smalltalk-80, в том числе библиотеки классов и средства разработки приложений.
А.3. Object Pascal
Происхождение
Object Pascal создавался сотрудниками компании Apple Computer (некоторые из которых были участниками проекта Smalltalk) совместно с Никлаусом Виртом (Niklaus Wirth), создателем языка Pascal. Непосредственным предшественником Object Pascal является Clascal (объектно-ориентированная версия Pascal для компьютера Lisa). Object Pascal известен с 1986 года и является первым объектно-ориентированным языком программирования, который был включен в Macintosh Programmer's Workshop (MPW), среду разработки для компьютеров Macintosh фирмы Apple. Для MPW создана библиотека классов, называемая МасАрр, являющаяся основой для создания прикладных приложений, отвечающих требованиям к интерфейсу пользователя Macintosh.
Обзор
Шмукер (Schmucker) утверждает, что "Object Pascal - это "скелет" объектно-ориентированного языка [В последние годы этот язык стал очень популярен благодаря системе Delphi фирмы Borland. - Примеч. ред.]. В нем нет методов класса, переменных класса, множественного наследования и метаклассов. Эти механизмы исключены специально, чтобы сделать язык простым для изучения начинающими "объектными" программистами" [11].
В табл. А-2 приведены общие характеристики Object Pascal.
Абстракции Переменные экземпляра Методы экземпляра Переменные класса Методы класса Да Да Нет Нет
Инкапсуляция Переменных Методов Открытые Открытые
Модульность Разновидности модулей Модуль (unit)
Иерархии Наследование Шаблоны Метаклассы Одиночное Нет Нет
Типизация Сильная типизация Полиморфизм Да Да (одиночный)
Параллельность Многозадачность Нет
Сохраняемость Долгоживущие объекты Нет
Таблица А-2. Object Pascal.
Ссылки
Основным руководством по Object Pascal является "MPW Object Pascal Reference" от Apple [12].
А.4. 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) появились шаблоны (параметризованные классы) и обработка исключений. Комитет ANSI по C++ (X3J16) недавно одобрил предложения по введению пространств имен (что соответствует нашему обозначению категорий классов) и проверки типов во время исполнения.