ГЛАВА 6. Не плоди объекты без нужды. - В. Оккам Эта глава посвящена понятию производного класса. Производные классы - это простое, гибкое и
эффективное средство определения класса. Новые возможности добавляются к уже существующему
классу, не требуя его перепрограммирования или перетрансляции. С помощью производных классов
можно организовать общий интерфейс с несколькими различными классами так, что в других частях
программы можно будет единообразно работать с объектами этих классов. Вводится понятие
виртуальной функции, которое позволяет использовать объекты надлежащим образом даже в тех
случаях, когда их тип на стадии трансляции неизвестен. Основное назначение производных классов –
упростить программисту задачу выражения общности классов.
6.1 Введение и краткий обзор Любое понятие не существует изолированно, оно существует во взаимосвязи с другими понятиями, и
мощность данного понятия во многом определяется наличием таких связей. Раз класс служит для
представления понятий, встает вопрос, как представить взаимосвязь понятий. Понятие производного
класса и поддерживающие его языковые средства служат для представления иерархических связей,
иными словами, для выражения общности между классами. Например, понятия окружности и
треугольника связаны между собой, так как оба они представляют еще понятие фигуры, т.е. содержат
более общее понятие. Чтобы представлять в программе окружности и треугольники и при этом не
упускать из вида, что они являются фигурами, надо явно определять классы окружность и треугольник
так, чтобы было видно, что у них есть общий класс - фигура. В главе исследуется, что вытекает из этой
простой идеи, которая по сути является основой того, что обычно называется объектно-
ориентированным программированием.
Глава состоит из шести разделов:
$$6.2 с помощью серии небольших примеров вводится понятие производного класса, иерархии
классов и виртуальных функций.
$$6.3 вводится понятие чисто виртуальных функций и абстрактных классов, даны небольшие
примеры их использования.
$$6.4 производные классы показаны на законченном примере
$$6.5 вводится понятие множественного наследования как возможность иметь для класса более
одного прямого базового класса, описываются способы разрешения коллизий имен,
возникающих при множественном наследовании.
$$6.6 обсуждается механизм контроля доступа.
$$6.7 приводятся некоторые приемы управления свободной памятью для производных классов.
В последующих главах также будут приводиться примеры, использующие эти возможности языка.