Хотя принципы структурного программирования позволили улучшить понятность и надежность программ, а также облегчить их сопровождение, создание программ больших размеров по-прежнему оставалось нелегкой задачей. Объектно-ориентированное программирование (ООП) предлагает новый подход к решению этой задачи. В отличие от процедурного программирования, где главное внимание уделяется алгоритмам, в ООП основной акцент делается на данных. При использовании ООП проблему решают не с помощью процедурного подхода, заложенного в языке, а приспосабливают язык для решения этой проблемы. Идея заключается в создании таких форм данных, которые соответствовали бы специфике задачи.
Спецификацией, описывающей подобную уникальную форму данных, в языке С++ является класс, а конкретной структурой данных, созданной в соответствии с этой спецификацией, — объект. Например, класс может описывать общие для всех руководящих работников корпорации свойства (имя, должность, оклад и, например, необычные способности), тогда как объект представляет конкретного руководителя (Василий Иванов, вице-президент компании, оклад 35 млн. руб. в год, знает как пользоваться программой «Блокнот»). В общем случае класс определяет, какие данные будут представлять объект и какие операции могут выполняться над этими данными. Предположим, мы разрабатываем графическую программу, способную рисовать прямоугольники. Можно создать класс, описывающий прямоугольник. Данными в спецификации этого класса могут служить: местоположение углов, высота и ширина, цвет и стиль линии границы, а также цвет и текстура заполнения площади прямоугольника. Часть спецификации этого класса, описывающая операции, может включать методы перемещения прямоугольника, изменения его размеров, вращения треугольника, изменения цветов и шаблонов, а также копирования прямоугольника в другое место. Если впоследствии использовать эту программу для рисования прямоугольника, то она создаст объект в соответствии со спецификацией класса. Данный объект будет содержать все значения данных, описывающих прямоугольник, а с помощью методов класса можно будет этот прямоугольник модифицировать. Если необходимо нарисовать два прямогольника, то программа создаст два объекта, по одному для каждого прямоугольника
Объектно-ориентированный подход к разработке программы состоит в том, что сначала разрабатываются классы, точно представляющие те вещи, с которыми имеет дело программа. В графической программе, например, можно определить классы для представления прямоугольников, линий, окружностей, кистей, перьев и т.п. После этого, используя объекты классов, можно приступать к разработке самой программы. Такой процесс продвижения от более низкого уровня организации (классы), к более высокому уровню (программа), называется программированием снизу вверх.
Объектно-ориентированное программирование — это не только объединение данных и методов в описании класса. При использовании ООП, например, упрощается создание повторно используемого кода программы, что в конечном итоге освобождает человека от большого объема работы. Сокрытие информации позволяет предохранить данные от нежелательного доступа. Полиморфизм дает возможность создавать множественные определения для операций и функций (а то, какое определение конкретно будет использоваться, зависит от контекста программы). Наследование позволяет создавать новые классы из старых. Как видим, в объектно-ориентированном программировании реализуется много новых идей и используется иной подход к созданию программ в сравнении с процедурным программированием. Основное внимание уделяется не алгоритмическому аспекту задач, а представлению понятий.
Разработка полезного и надежного класса может оказаться трудной задачей. К счастью, объектно-ориентированные языки дают возможность без особого труда включать в создаваемые программы уже существующие классы. Поставщики программного обеспечения разработали различные библиотеки классов, среди которых — библиотеки, предназначенные для упрощения создания программ в таких средах, как Windows или Macintosh. Одним из реальных преимуществ языка C++ является то, что он позволяет легко адаптировать и повторно использовать хорошо проверенные коды программ.
Язык программирования С++ также был детищем лаборатории Bell и был создан в начале 1980-х годов Бьярни Страуструпом.
Бьярни Страуструп
Методика создания программ на С++
Предположим, что вы написали программу на языке C++. Как обеспечить ее выполнение? Конкретные действия зависят от программной среды компьютера и от используемого компилятора C++. Но в общем случае вам будет необходимо выполнить следующие действия:
Воспользовавшись текстовым редактором, написать программу и сохранить ее в файле. Этот файл будет служить исходным кодом программы.
Скомпилировать исходный код. Это означает выполнение программы, которая транслирует исходный код во внутренний язык компьютера, называемый машинным языком. Файл, содержащий оттранслированную программу, — это объектный код программы.
Связать объектный код с дополнительным кодом и скомпоновать из них единую программу. Например, программы C++ обычно используют библиотеки. Библиотека C++ содержит совокупность объектных кодов компьютерных подпрограмм, называемых функциями, которые служат для выполнения таких задач, как отображение информации на экране или вычисление квадратного корня числа. При компоновке объектный код программы объединяется с объектными кодами функций, используемых программой, и определенным стандартным кодом начальной загрузки, в результате чего создается выполняемая версия программы. Файл, содержащий окончательный продукт, называется исполняемым кодом.