| 
                Лабораторный практикум по основам языка C/С++ | 
               
Тема 3. Наследование
Каждый класс представляет собой некую сущность со своими свойствами, изменение которых позволяет создавать все многообразие объектов данного класса. Это входит в понятие объектно-ориентированного программирования (ООП) – полиморфизм.
 Рассмотрим теперь такое понятие ООП, как наследование, то есть порождение нового класса от уже существующего. При этом все элементы класса-предка, размещенные в зонах public и protected будут доступны в классе-потомке. Элементы класса, размещенные в зоне private доступны только самому классу. 
Наследование является эффективным методом расширения функциональности класса и/или его изменения. Вместо того, чтобы создавать код с незначительными изменениями или малыми добавлениями полностью заново, в ООП существующий код берется без изменений как основа для нового класса и уже в код нового класса вносятся необходимые изменения. Таким образом объем текста программы значительно сокращается, поскольку каждый участок кода присутствует в нем лишь один раз.
Для того, чтобы создать (породить) новый класс от уже существующего, необходимо после имени класса-потомка указать после двоеточия имя класса предка. Перед именем класса предка может также стоять модификатор видимости.
 class <Имя класса потомка> : [модификатор видимости] <Имя класса предка>
 {
 ...
 <описание класса>
 ...
 };
 
Рассмотрим такой пример. Пусть требуется создать класс телефон, а также класс телефон с автоответчиком. Простой телефон имеет тип циферблата, а также память на 10 телефонных номеров. Может звонить, записывать и извлекать номер телефона. Структура класса может выглядеть следующим образом:

В классе "телефон с автоответчиком" достаточно описать методы и поля, присущие автоответчику:

Тема 3.2 Нотация языка UML
Для того, чтобы представлять иерархию классов, а также отношения между классами в более удобной и наглядной форме, рекомендуется использовать язык UML (Unified Modelling Language - унифицированный язык моделирования).
Рекомендуем ознакомиться с нотацией языка UML для описани диаграммы классов:
- Лекция 5: Элементы графической нотации диаграммы классов
 - Лекция 6: Отношения и их графическое изображение на диаграмме классов
 
Для представленных классов можно составить следующую диаграмму классов: