АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Наследование. Множественное наследование. Конструкторы при множественном наследовании. Роль наследования при разработке программ

Читайте также:
  1. Болезни с нетрадиционным типом наследования
  2. Брачно-семейное право. Наследование.
  3. Виды психокоррекционных программ. Основные требования к составлению коррекционно-развивающих программ.
  4. Глава 1. Общесистемный подход к разработке и принятию управленческих решений
  5. Глава 9. ПРАВОВЫЕ ПРОБЛЕМЫ НАСЛЕДОВАНИЯ
  6. Деревья наследования
  7. Дублирование (множественное дублирование).
  8. Каковы основные положения о разработке инструкций по охране труда.
  9. Комплексный подход к разработке производственной программы предприятия
  10. Конструкторы
  11. Конструкторы и деструкторы
  12. Конструкторы и деструкторы. Автоматическая инициализация. Список инициализации элементов.

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

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

Класс может быть производным не только от одного базового класса, а и от мно- гих. Этот случай называется множественным наследованием. На рис. показан случай, когда класс C является производным двух классов: A и В.

 

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

class A {

}; class В {

};

class C: public A, public В {

};

Базовые классы класса C перечислены после двоеточия в строке описания класса и разделены запятыми.

 

Конструкторы при множественном наследовании

Программа EMPMULT не имеет конструкторов. Рассмотрим пример, показыва-ющий, как работают конструкторы при множественном наследовании. Представим, что мы пишем программу для строителей-подрядчиков, которая работает со строительными материалами. Нам нужен класс, определяющий количество стройматериалов каждого типа, например 100 восьмиметровых бревен. Другой класс должен хранить различные данные о каждом виде стройматериалов. Например, длину куска материала, количество таких кусков и стоимость за погонный метр.

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

Мы используем класс Distance из предыдущего примера для хранения длины материала. Наконец, мы создали класс Lumber который является производным классов Туре и Distance.

Главной особенностью этой программы является использование конструкто- ров производного класса Lumber. Они вызывают подходящие конструкторы классов Туре и Distance.

 

Роль наследования при разработке программ

 

Процесс разработки программ был основательно изменен с появлением ООП. Это связано не только с использованием классов, но и с использованием насле- дования. Рассмотрим его этапы.

Пусть программист А создает класс. Положим, это будет класс, похожий па класс Distance, методы которого предназначены для выполнения арифметических операций с определенным пользователем типом данных.

Программисту Б нравится этот класс, но он считает, что класс может быть улучшен путем введения знака интервала. Решением будет создание нового класса, похожего на класс DistSign программы ENGLEN, который является произ- водным класса Distance, но включает в себя расширения, необходимые для реа- лизации знака интервала.

Программисты В и Г затем пишут приложения, использующие класс DistSign.

Программист Б может не иметь доступа к исходному коду, реализующему класс Distance, а программисты В и Г могут не иметь исходного кода класса DistSign. Но в C++ существует возможность повторного использования кода, по- этому программист Б может использовать и дополнять работу программиста А, а В и Г могут использовать работы Б (и А).

Заметим, что различия между разработчиками инструментов программного обеспечения и программистами, пишущими приложения, становятся расплыв- чатыми. Программист А создает общецелевой программный инструмент, класс Distance. Программист Б, в свою очередь, создает более специализированный класс DistSign. Программисты В и Г пишут приложения. А — разработчик инст- румента, а В и Г — разработчики приложений. Б находится где-то посередине. В любом случае ООП делает программирование более гибким, но в то же время и более сложным.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)