MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


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

Название:Интерфейсы как решение проблем множественного наследования
Просмотров:103
Раздел:Информатика, программирование
Ссылка:Скачать(6 KB)
Описание:В этой работе разбирается проблема множественного наследования в языке программирования С++ и возможное ее решение путем применения абстракций интерфейсов.

Университетская электронная библиотека.
www.infoliolib.info

Часть полного текста документа:

Интерфейсы как решение проблем множественного наследования
    Евгений Каратаев
    В этой работе разбирается проблема множественного наследования в языке программирования С++ и возможное ее решение путем применения абстракций интерфейсов.
    Множественным наследованием является образование класса путем наследования одновременно нескольких базовых классов. Штука полезная и одновременно с этим проблемная. Разберем пример, в котором появляется множественное наследование, приводящее к проблеме.
    Классическим заданием для начинающего программиста является задача написать классы, реализующие иерархию Человек - Студент - Сотрудник. Обычно первым же решением есть образование трех классов в виде:
    class Человек { ... };
    class Сотрудник : public Человек { ... };
    class Студент : public Человек { ... };
    В классе Человек декларируются несколько виртуальных и, возможно, абстрактных, функций, которые переопределяются / реализуются в классах-наследниках. Схема на первый взгляд совершенно очевидна и практически ни у кого не вызывает подозрений. Схема реализуется в программе и программа сдается в работу.
    Проблема возникает позже, когда оператор приходит и говорит:
    - У меня есть человек, который одновременно и сотрудник и студент. Что мне делать?
    Реализованная схема, вообще говоря, не предполагает такого варианта - могут быть либо сотрудник, либо студент. Но что-то делать надо. В этот момент приходит на помощь множественное наследование. Программист, не долго думая, создает еще один класс, образованный наследованием и от Сотрудник и от Студент:
    class СтудентСотрудник : public Студент, public Сотрудник { ...};
    На первый взгляд все в порядке, на второй - полный бардак. Дело в том, что класс Сотрудник, как он был декларирован, содержит в себе полную копию класса Человек. То же самое относится и к классу Студент. Таким образом, класс СтудентСотрудник будет содержать в себе уже 2 копии класса Человек. При этом функции класса Сотрудник будут работать со своим экземпляром класса Человек, а функции класса Студент - со своим. В результате корректного поведения добиться практически очень трудно. В классе СтудентСотрудник придется переопределять все функции базовых классов и вызывать соответствующие функции базовых классов, чтобы модификации обеих копий класса Человек прошли когерентно.
    Обнаружив такую ситуацию путем тяжелой отладки, программист приходит к необходимости применения виртуального наследования для исключения дублирования класса Человек. Проблема состоит в том, что виртуальное наследование требует модификации графа наследования базовых классов. Требуемая схема имеет вид:
    class Человек { ... };
    class Студент : virtual public Человек { ... };
    class Сотрудник : virtual public Человек { ... };
    class СтудентСотрудник : public Студент, public Сотрудник { ...
    };
    В этом варианте решена проблема однозначной входимости класса Человек во все классы. Но остается вопрос - не возникнет ли такой же проблемы и дальше с полученным классом СтудентСотрудник? И будет ли возможность произвести модификацию уже работающего кода? В такой ситуации руки могут опуститься - следует либо согласиться с существованием проблемного кода либо действительно идти на полную переработку программы. ............




Нет комментариев.



Оставить комментарий:

Ваше Имя:
Email:
Антибот:  
Ваш комментарий:  



Похожие работы:

Название:Взаємозв’язок життєвого самовизначення і професійного вибору у студентів коледжу і учнів СЗШ
Просмотров:102
Описание: Вступ Суспільна криза на фоні економічного, політичного та морального підґрунтя, негативно позначається на образі світу молодої людини, її ціннісних орієнтирах, «Я-концепції», образі «самості», які тільки-но

Название:Гипноз у животных и человека
Просмотров:95
Описание:                     "Гипноз у животных и человека"   Оглавление Введение История изучения гипноза Методики проведения гипноза Свойства гипноза Явления

Название:Представления о сверхчеловеке Ницше
Просмотров:135
Описание: Представления о сверхчеловеке Ницше Ницше был самым необычным из всех моралистов. Он утверждал мораль через ее критику, даже радикальное отрицание. Он исходил из того, что историческ

Название:Современные возможности идентификации человека: одорология, фоноскопия, геноскопия
Просмотров:183
Описание: Содержание Введение 1. Криминалистическая одорология 2. Криминалистическая фоноскопия 3. Криминалистическая геноскопия Заключение Список используемой литературы Введение Теория кримина

Название:Похищение человека и захват заложника в праве Российской Федерации и международном праве
Просмотров:130
Описание: Введение Похищение человека предполагает его захват и перемещение в другое место помимо воли потерпевшего. Обычно это связано с последующим удержанием похищенного в неволе. Однако потерпевший может быть и н

 
     

Вечно с вами © MaterStudiorum.ru