Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_Инф.doc
Скачиваний:
27
Добавлен:
29.03.2015
Размер:
3.02 Mб
Скачать

11.5. Наследование

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

class base { // Задание базового класса

int i;

public:

void set_i(int n);

int get_i();

};

class derived: public base { // Задание производного класса

int j;

public:

void set_j(int n);

int mul();

};

main()

{

derived ob;

ob.set_i(10); // загрузка i в base

ob.set_j(4); // загрузка j в derived

cout << ob.mul(); // вывод числа 40

return 0;

}

Отметим, что функция get_i(), которая является членом базового класса, а не производного, вызывается внутри производного класса без какой бы - то ни было связи с каким-либо объектом. Это возможно потому, что открытые члены класса base становятся открытыми членами derived.

В функции mul(), вместо прямого доступа к i, необходимо вызывать get_i() из-за того, что закрытые члены базового класса, в данном случае i, остаются закрытыми и недоступными для любого производного класса. Причина, по которой закрытые члены становятся недоступными для производных классов - поддержка инкапсуляции.

Литература

1. Казиев В.М. Введение в информатику. www.intuit.ru

2. Коршунов Ю.М. Математические основы кибернетики. - М.: Энергия,

1980. - 423 с.

3. Мельников В.В. Защита информации в компьютерных системах. М.:

Финансы и статистика, 1997.

4. Жельников В. Криптография от папируса до компьютера. М.: АBF, 1996.

5. Грушо А.А., Тимонина Е.Е. Теоретические основы защиты информации.

М.: Яхтсмен, 1996.

6. Кузнецов О.П., Адельсон-Вельский Г.М. Дискретная математика для

инженера. - М. : Энергия, 1980. - 342с.

7. Поспелов Д.А. Логические методы анализа и синтеза схем.- М.:

Энергия, 1974. - 368 с.

8. Динман М.И. С++. Освой на примерах. – СПб.: БХВ Петербург, 2006. –

384 с.

9. Фридман А.Л. Язык программирования Си++. Интернет-университет

информационных технологий - ИНТУИТ.ру, 2004.

10. Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы

проектирования компиляторов. - М.: Мир, 1979. - 654 с.

11. Ленгсам Й., Огенстайн М., Тененбаум. Структуры данных для

персональных ЭВМ. — М.: Мир, 1989. — 568 с.

12. Вирт Н. Алгоритмы + структуры данных = программы. — М.: Мир, 1985.

- 406 с.

143