Бьерн Страуструп - Язык программирования С++. Главы 5-8 Страница 27. Производные классы. Введение
|
Страница 27 из 88
* ГЛАВА 6 ПРОИЗВОДНЫЕ КЛАССЫ
Не плоди объекты без нужды. - В. Оккам
Эта глава посвящена понятию производного класса. Производные классы - это простое, гибкое и эффективное средство определения класса. Новые возможности добавляются к уже существующему классу, не требуя его перепрограммирования или перетрансляции. С помощью производных классов можно организовать общий интерфейс с несколькими различными классами так, что в других частях программы можно будет единообразно работать с объектами этих классов. Вводится понятие виртуальной функции, которое позволяет использовать объекты надлежащим образом даже в тех случаях, когда их тип на стадии трансляции неизвестен. Основное назначение производных классов - упростить программисту задачу выражения общности классов.
6.1 Введение и краткий обзор Любое понятие не существует изолированно, оно существует во взаимосвязи с другими понятиями, и мощность данного понятия во многом определяется наличием таких связей. Раз класс служит для представления понятий, встает вопрос, как представить взаимосвязь понятий. Понятие производного класса и поддерживающие его языковые средства служат для представления иерархических связей, иными словами, для выражения общности между классами. Например, понятия окружности и треугольника связаны между собой, так как оба они представляют еще понятие фигуры, т.е. содержат более общее понятие. Чтобы представлять в программе окружности и треугольники и при этом не упускать из вида, что они являются фигурами, надо явно определять классы окружность и треугольник так, чтобы было видно, что у них есть общий класс - фигура. В главе исследуется, что вытекает из этой простой идеи, которая по сути является основой того, что обычно называется объектно-ориентированным программированием. Глава состоит из шести разделов: $$6.2 с помощью серии небольших примеров вводится понятие производного класса, иерархии классов и виртуальных функций. $$6.3 вводится понятие чисто виртуальных функций и абстрактных классов, даны небольшие примеры их использования. $$6.4 производные классы показаны на законченном примере $$6.5 вводится понятие множественного наследования как возможность иметь для класса более одного прямого базового класса, описываются способы разрешения коллизий имен, возникающих при множественном наследовании. $$6.6 обсуждается механизм контроля доступа. $$6.7 приводятся некоторые приемы управления свободной памятью для производных классов. В последующих главах также будут приводиться примеры, использующие эти возможности языка.
|