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

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);

// . комментарий

};

Это определение содержит информацию как общую, так и частную. Сначала представление фигуры shape определяется двумя элементами частных данных - центром и цветом. Затем идет интерфейс, содержащий общую информацию. Пользователь может получить координаты центра, перемещать центр фигуры в данную точку, рисовать фигуру и вращать ее. Функции draw() и rotate() нельзя определить для абстрактного типа shape. Они называются виртуальными функциями и определяются позже для каждой специфической фигуры: окружности, треугольника или квадрата. Каждая из них определяется оператором class. Это означает, что, например, новый тип данных circle является производным класса shape, который называется его базовым классом. Производный класс наследует свойства базового класса. В данном случае класс circle наследует члены класса col и centre класса shape. Кроме этого, у него есть член radius. Функции draw() и rotate() теперь реализованы для класса circle:


Страница: