Объектно-ориентированные языки програмированияРефераты >> Программирование и компьютеры >> Объектно-ориентированные языки програмирования
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: