Бьерн Страуструп - Абстракция данных в языке С++ - Введение
ОГЛАВЛЕНИЕ
Введение
В данной статье ставится цель показать как писать программы на С++,
используя "абстракцию данных" (*2). В статье предлагается обсуждение
каждой новой особенности языкa для помощи читателю в осознании места,
занимаемого ею в общем проекте языка техники программированияб которую
она предназначена поддерживать, ошибок и издержек, избежать которых
она предназначенa помочь программисту. Однако поскольку данная статья
не является руководством она не дает полной детализации примитивов
языка; последнее может быть найдено в [3].
*1 Bjarnх Stroustrup Cand.Scient (Mathematic and Computer Scitnct) 1975
Universit. Aarch Denmark. Ph.D (Computer Science). 1979
Cambrigх University. AT&T Bell Laboratorie 1979
- иследовательские интересы включают : распределенные вычислительные
системы, моделирование, методология программирования, языки
программирования. В настоящее время является членом Computer
Scienc Researc Center, член АСМа и IEEE.
(Рукопись получена 5 августа 1983 г.)
*2 Замечание по названию С++ : ++ - знак операции инкремента в С, если
этa операция применяется к переменной (обычно к индексу массива или
указателю) значение переменной увеличивается так, чтобы указывать на
следующий элемент. Название С++ было предложен Риком Маскитти (Rici
Mascitti). С++ в дальнейшем следует рассматривать как уточняющее
название, употребляемое либо по формальному поводу, либо во
избежании двусмысленности. Среди посвященных С++ именуется С, а
язык С, описанный в [1], "старым С". Более короткое обозначение С
является синтаксической ошибкой. Оно также использовалось как
название одного, не относящегося к теме статьи, языка. Ценители
семантики С найдут, что С++ менее выразительном чем ++С, однако
последнее не является приемлемым названием. Язык не назван D, так
как является расширением С, а не попыткой решить некие проблемы
изначально присущие базовой структуре языкa С. Название С++ отражает
эволюционный характер изменений относительно старого С. Еще одну
интерпретацию названия С++.(см. [2], Приложение.)
Эволюционизируя из языка С [1] C++ прошел через несколько
промежуточных этапов известных под общим названием "С с классами"
[4,5]. Первоначальное Simula6 [6,7].
Основным намерением являлось создание возможностей абстракции при
проектировании больших систем и в то же время полезных в областях,
где очень важны лаконичность С и его способность выражать
низкоуровневые детали. В связи с этим было специально предусмотрено
чтобы использование классов С, предоставляющих общий и гибкий
механизм структурирования не приводило в сравнении со старым С
к издержкам ни по памяти ни по времени исполнения.
Зa исключением таких деталей как введение новых ключевых слов,
С++ является надмножеством языка С. см. ниже #2."Реализация и
совместимость". Язык полностью реализован и используется. Десятки
тысяч строк код написаны и отлажены десятками программистов.
Статья разделяется на три основные части :
1. Краткое представление идеи абстракции данных.
2. Полное описание возможностей, предоставляемых для реализаци этой
идеи, при помощи небольших примеров. Это описание само по себе
распадается на три секции :
a. Базовая техника для упрятывания информации ; доступ к данным,
размещения и инициализации. Классы, составляющие функции
класса, конструкторы, перегрузки имен функций представлены
начиная с #3. "Разграничение доступа к данным".
b. Механизмы и техника создания новых типов с связанными
операциями. Перегрузка знаков операций, преобразование типов,
определяемых пользователем, ссылки и операции управления
свободной памятью, представлены начиная с #8. " Перегрузка
знаков операций и преобразование типов".
c. Механизмы для создания иерархии абстракций для динамической
типизации объектов и для создания полиморфных классов и функций.
Производные классы и виртуальные функции представлены, начиная
с #14."Производные классы".
Пункты b и c не зависят непосредственно друг от друга.
3. В заключение несколько общих замечаний по технике программирова-
ния, реализации языка, эффективности, совместимости со старым С и
сравнение с другими языками, начиная с #18. "Ввод и вывод".
Несколько секций помечено словом "отступление"; они содержат
информацию хотя и важную для программиста и представляющую вероятно
интерес для широкого читателя, но не относящуюся напрямую к
абстракции данных.