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