Реферат: Объектно-ориентированные языки програмирования
С другой стороны, Smalltalk-80 совсем не маленький язык. Существует большая библиотека классов: более 250 классов и более 2000 методов. Работа с такой библиотекой составляет важную задачу при изучении языка, несмотря на то, что для просмотра методов и классов существуют специальные средства.
Среда
Smalltalk-80 тесно связан с развитой средой программирования. Пользовательский интерфейс состоит из набора экранных образов: это прямоугольные области, содержащие текст или графику, которые можно перемещать по экрану, изменять в размере, заменять меткой или закрывать. Образы могут перекрываться полностью или частично. Взаимодействие с системой осуществляется с помощью трехкнопочной мыши или с клавиатуры. Визуальные объекты для пользователя - это курсоры, высвечивание, меню, полоски сдвига и рамки с подсказкой.
Основные компоненты системы активизируются внутри экранных образов. Сюда
входят текстовый редактор, редактор формы и битовый редактор для создания рисунков, инспектор для проверки переменных объекта, окно просмотра системы для изучения классов и сообщений, метки окна для описания прерванного процесса и отладчики.
Smalltalk был разработан для индивидуальной работы программиста на персональной рабочей станции. Таким образом, эта система первоначально была доступна только как однопользовательская. Сейчас в ней уже есть средства поддержки коллективов программистов.
Поставщики
В 1981-82 гг. четырем фирмам предлагалось реализовать Smalltalk на своей аппаратуре. После этого эксперимента Smalltalk поставлялся университетам и исследовательским институтам как продукт без сопровождения. Кроме того, был выпущен ряд книг по языку и его реализации. Однако, язык не был запатентован фирмой Xerox вплоть до 1986 г. Эта фирма до сих пор контролирует рынок Smalltalk-80 с помощью отделения SIS и фирмы ParcPlace Systems. Другие продавцы имеют лицензию на продукт и его различные реализации. Исключением является фирма Digitalk, выпустившая свою собственную версию для PC - Smalltalk/V. В таблице С2.2 приведены доступные в настоящее время продукты Smalltalk.
Таблица C2.2 Продавцы и продукты языка Smalltalk
Продукт | Платформа | Продавец |
Smalltalk-80 | DEC Station 3100 под Ultrix | ParcPlace systems |
PC 80386 под MS-DOS | ||
Sun-3, 4, 386i | ||
Apple Macintosh II, Plus и SE | ||
HP 9000 series 300 | ||
Apollo Series 3000, 4000 | ||
Apollo DN570, 580, 590 | ||
Smalltalk-80 | Tektronix 4315 | Tektronix |
Color Smalltalk-80 | Tektronix 4316, 17 и 19 | Tektronix |
Smalltalk-80 | Xerox 8010/1108 и 6085/1186 | Xerox SIS |
Smalltalk/V | IBM PC/XT/AT под MS-DOS | Digitalk |
Smalltalk/V 286 | 286 и 386 PC под MS-DOS | Digitalk |
Smalltalk/V Mac | Apple Macintosh II, PLUS и SE | Digitalk |
Будущее языка Smalltalk волнует как пользователей, так и поставщиков. В августе 1987 г. была организована ассоциация разработчиков и прикладных пользователей Smalltalk - OOPSTAD. Она публикует новости HOOPLA (Hooray for Object-Oriented Languages). Работу по стандартизации взял на себя IEEE Microprocessor Standards Committee (P1152). Основное внимание он уделяет языку и базовым классам типа Number и Collection. Основные поставщики и ряд консультантов сформировали Консорциум Smalltalk в целях развития применения языка и среды и управления их технической эволюцией. Он является открытым для отдельных пользователей и корпораций.
2.3. ПРОДУКТЫ, ОСНОВАННЫЕ НА ЯЗЫКЕ СИ
В настоящее время объектно-ориентированные языки стремятся приблизиться к традиционным языкам (в основном к языку Си). Для этого есть ряд причин:
- уже можно воспользоваться накопленным опытом программирования;
- интерфейсы существующих систем намного проще;
- язык более приемлем в области управления;
- поставка может быть осуществлена на стандартных платформах;
- гарантия переносимости между платформами.
Наибольшим потенциалом для больших коммерческих организаций обладает язык C++ фирмы AT&T. Хотя он и не имеет пока большого количества средств сопровождения, некоторые коммерческие организации уже работают над созданием сред развития языка, а другие разрабатывают дополнительные инструменты и библиотеки классов. Кроме того, несколько компаний разработали языки и инструментальные средства, основанные на языке Си. В таблице C2.3 подводятся итоги доступных продуктов, основанных на Си.
Таблица С2.3 Продавцы и продукты языков, основанных на Си
Продукт | Платформа | Продавец |
Трансляторы C++ | ||
Advantage C++ | IBM PC под MS-DOS, Xenix, Unix |
Lifeboat |
Designer C++ | Macintosh II | Oasys |
IBM PC под MS-DOS, OS/2 | ||
IBM RT | ||
PC 80386 под Unix, Xenix | ||
HP 9000/300 и 9000/800 | ||
NEC Astra | ||
AT&T 3b2 | ||
DEC Vax под VMS и Ultrix | ||
Sun-3, Sun-4 | ||
Glockenspiel C++ | IBM PC под MS-DOS, OS/2 |
Glockenspiel |
386/ix и Xenix | ||
AT&T 3b2 под Sys V.2 | ||
HP 9000/300 | ||
Sun-3, Sun/386i | ||
IBM RT под Sys V.2 | ||
Apollo | ||
DEC Vax под Ultrix и VMS | ||
Guidelines C++ | IBM PC под MS-DOS | Guidelines |
Компиляторы С ++ | ||
Oregon C++ | Sun-3 | Oregon |
DEC Vax под Ultrix | ||
PC 386 под Xenix | ||
Zortech C++ | IBM PC под MS-DOS | Zortech |
Другие продукты, основанные на языке Си | ||
C-talk | IBM-PC под MS-DOS | CNS |
Macintosh | ||
Complete C | IBM PC под MS-DOS, OS/2, Unix | Complete Computer Corporation |
Objective C | Sun | Stepstone |
DEC Vax | ||
Apollo | ||
HP 9000 series 200/300 |
2.3.1. C++
Язык
Язык С++ в основном является языком Си со специальными синтаксическими расширениями для определения и управления объектами. В нем был учтен ряд недостатков языка Си: теперь ведется проверка типов аргументов функций, можно производить макроподстановку функций. Также в него включены некоторые средства проекта стандарта Ansi C. По завершении стандарта C++ будет пересмотрен для удаления несовместимостей двух языков. Важной новой особенностью C++ является поддержка абстракции данных и объектно-ориентированного программирования. Абстракция данных поддерживается с помощью введения типов, определенных пользователем. Например, предположим, что есть новый тип данных shape, используемый в графической
системе. Этот тип определяется с помощью оператора class:
class shape {
point centre;
colour col;
// ... комментарий
public:
point where() {return centre; }
void move(point to)
{ centre = to; draw(); }
virtual void draw();
virtual void rotate(int);