Страница 2 из 25 Введение
В данной статье ставится цель показать как писать программы на С++, используя "абстракцию данных" (*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. "Ввод и вывод". Несколько секций помечено словом "отступление"; они содержат информацию хотя и важную для программиста и представляющую вероятно интерес для широкого читателя, но не относящуюся напрямую к абстракции данных. |