|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Наследование. Множественное наследование. Конструкторы при множественном наследовании. Роль наследования при разработке программНаиболее значимой после классов возможностью ООП является наследование. Это процесс создания новых классов, называемых наследниками или производ- ными классами, из уже существующих или базовых классов. Производный класс получает все возможности базового класса, но может также быть усовершенство- ван за счет добавления собственных. Базовый класс при этом остается неизменным. Наследование — важная часть ООП. Выигрыш от него состоит в том, что наследование позволяет использовать существующий код несколько раз. Имея написанный и отлаженный базовый класс, мы можем его больше не модифици- ровать, при этом механизм наследования позволит нам приспособить его для работы в различных ситуациях. Используя уже написанный код, мы экономим время и деньги, а также увеличиваем надежность программы. Наследование может помочь и при начальной постановке задачи программирования, разработке общей структуры программы. Класс может быть производным не только от одного базового класса, а и от мно- гих. Этот случай называется множественным наследованием. На рис. показан случай, когда класс 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. Программисты В и Г пишут приложения. А — разработчик инст- румента, а В и Г — разработчики приложений. Б находится где-то посередине. В любом случае ООП делает программирование более гибким, но в то же время и более сложным. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |