C++. Бархатный путь. Часть 2 - Обзор принципов объектно-ориентированного программирования
ОГЛАВЛЕНИЕ
Обзор принципов объектно-ориентированного программирования
Мы уже многое повидали.
Основные типы с их свойствами и перечнем операций, леводопустимые выражения, операторы управления, массивы и указатели, указатели на функции и функции, использующие указатели на функции как параметры и возвращаемые значения, совместно используемые (перегруженные) функции и алгоритм сопоставления…
При объявлении классов мы знаем, в чём состоят различия между статическими и нестатическими членами, нам известно назначение деструкторов и особенности различных вариантов конструкторов.
Мы познакомились с принципом наследования - одним из трёх основных принципов объектно-ориентированного программирования. Он реализуется через механизмы наследования и виртуальных классов, которые позволяют строить новые производные классы на основе ранее объявленных базовых классов. Принцип наследования уподобил процесс программирования процессу сборки сложных устройств и механизмов из наборов стандартных узлов и деталей.
Принцип инкапсуляции - второй принцип объектно-ориентированного программирования, делает процесс программирования ещё более похожим на работу в сборочном цехе. Хорошо спроектированный класс имеет открытый интерфейс для взаимодействия с "внешним миром" и защищённую от случайного воздействия "внутреннюю" часть. Такой класс подобен автомобильному двигателю. В момент его установки в кузове или на раме при сборке автомобиля, он уже полностью собран. И не нужно сверлить в корпусе двигателя дополнительные отверстия для подсоединения трубопроводов системы охлаждения, подачи топлива и машинного масла. Разделение класса на скрытую внутреннюю часть и открытый интерфейс обеспечивается системой управления доступом к компонентам класса и дружественными функциями.
Принцип полиморфизма (полиморфизм означает буквально многообразие форм) - ещё один принцип объектно-ориентированного программирования. Он заключается в способности объекта во время выполнения программы динамически изменять свои свойства. Возможность настройки указателя на объект базового класса на объекты производных классов и механизм виртуальных функций лежат в основе этого принципа объектно-ориентированного программирования.
Многое нам ещё предстоит узнать, но то главное, что собственно и делает C++ объектно-ориентированным языком, уже известно.