Бьерн Страуструп - Язык программирования С++. Главы 5-7 - Глава 6. Производные классы

ОГЛАВЛЕНИЕ


ГЛАВА 6ПРОИЗВОДНЫЕ КЛАССЫ

     Не плоди объекты без нужды.
                                 - В. Оккам

Эта глава посвящена понятию производного класса. Производные классы - это простое, гибкое и эффективное средство определения класса. Новые возможности добавляются к уже существующему классу, не требуя его перепрограммирования или перетрансляции.

С помощью производных классов можно организовать общий интерфейс с несколькими различными классами так, что в других частях программы можно будет единообразно работать с объектами этих классов. Вводится понятие виртуальной функции, которое позволяет использовать объекты надлежащим образом даже в тех случаях, когда их тип на стадии трансляции неизвестен.

Основное назначение производных классов - упростить программисту задачу выражения общности классов.

6.1 Введение и краткий обзор

Любое понятие не существует изолированно, оно существует во взаимосвязи с другими понятиями, и мощность данного понятия во многом определяется наличием таких связей. Раз класс служит для представления понятий, встает вопрос, как представить взаимосвязь понятий. Понятие производного класса и поддерживающие его языковые средства служат для представления иерархических связей, иными словами, для выражения общности между классами. Например, понятия окружности и треугольника связаны между собой, так как оба они представляют еще понятие фигуры, т.е. содержат более общее понятие. Чтобы представлять в программе окружности и треугольники и при этом не упускать из вида, что они являются фигурами, надо явно определять классы окружность и треугольник так, чтобы было видно, что у них есть общий класс - фигура. В главе исследуется, что вытекает из этой простой идеи, которая по сути является основой того, что обычно называется объектно-ориентированным программированием. Глава состоит из шести разделов:

$$6.2 с помощью серии небольших примеров вводится понятие производного класса, иерархии классов и виртуальных функций.

 $$6.3 вводится понятие чисто виртуальных функций и абстрактных классов, даны небольшие примеры их использования.

 $$6.4 производные классы показаны на законченном примере

$$6.5 вводится понятие множественного наследования как возможность иметь для класса более одного прямого базового класса, описываются способы разрешения коллизий имен, возникающих при множественном наследовании.

 $$6.6 обсуждается механизм контроля доступа.

 $$6.7 приводятся некоторые приемы управления свободной памятью для производных классов. В последующих главах также будут приводиться примеры, использующие эти возможности языка.