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


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

Название:Агрегация или наследование?
Просмотров:111
Раздел:Информатика, программирование
Ссылка:Скачать(10 KB)
Описание:И снова о проектировании классов. Больная тема и место применения множества трюков. Большинство программистов используют трюки по-разному. Видимо, есть три способа их применения.

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

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

Агрегация или наследование?
    Евгений Каратаев
    И снова о проектировании классов. Больная тема и место применения множества трюков. Большинство программистов используют трюки по-разному. Видимо, есть три способа их применения - 1) неосознанно, 2) осознанно, но с затруднениями при выборе способа и 3) осознанно и, более того, трюки вычисляются.
    Рассмотрим вопрос выбора пути при решении задачи типа "добавление новой функциональности". Имеется модуль в виде набора классов, который по функциональности частично подходит к тому, что надо получить. Имеется задача добавить в модуль некую функциональность. Имеется нежелание много работать и иметь в последующем с полученным кодом проблемы. При желании в эти условия задачи можно, полагаю, вписать практически любую программерскую задачу.
    Рассмотрим выбор между двумя вариантами действий. Первый вариант - взять имеющийся класс, максимально подходящий к требуемому и изменить его путем модификации без получения нового класса. Скажем, поправить несколько функций или добавить несколько членов класса. Второй вариант - составить новый класс, унаследованный от максимально подходящего к требуемой функциональности и дописать к наследнику что ему не хватает или переопределить часть виртуальных функций базового. Первый вариант договоримся называть агрегированием, а второй - наследованием. Рассмотрим подробнее оба варианта, абстрагируясь от выбора конкретного языка программирования и содержания классов.
    При агрегации мы не получаем нового класса и для обеих задач, старой и новой, используем один и тот же класс. Агрегацию мы можем получить не только как способ решить новую задачу, но и как способ исправить ошибки в старой задаче, поскольку исправления кода автоматически влияют на старую задачу. При агрегации к классу добавляется одно или два поля, благодаря которым и происходит различение старой и новой функциональности. А именно по значению этих полей. Например, добавленное поле имеет смысл номера версии, в зависимости от значения которой в модифицированном классе различается поведение нескольких функций. Этим способом мы можем избежать рутины с большим количеством модификаций задачи. Что является типичным признаком современного проекта. Добавляем поле, и при изменениях в спецификации корректируем поведение нескольких функций. Переопределять виртуальные функции по понятным причинам нет необходимости.
    При наследовании мы получаем новый класс. Возможно, несколько. Новая функциональность реализуется исключительно в новом классе и имеющийся код этого никак не замечает и продолжает работать (надеюсь, без ошибок ;). В наследнике переопределяем одну или несколько виртуальных функций и при необходимости того добавляем поля данных. Примеры, как это делать, программисты сами могут привести из своей практики.
    Сведем сравнительные различия в таблицу. Вид различия Агрегация Наследование 1. Добавление новых полей Скорее всего, поскольку следует различать состояния объекта как старого класса и как нового класса Необязательно, поскольку функциональность может быть реализована скорее всего путем переопределения виртуальных функций. 2. Переопределение виртуальных функций Нет смысла Скорее всего 3. ............




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



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

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



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

Название:Изучение антропометрических данных уровня физического развития учащихся 7-х классов и гигиенических требований в Калиновской школе
Просмотров:170
Описание: МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ МАЛАЯ АКАДЕМИЯ НАУК ШКОЛЬНИКОВ КРЫМА «ИСКАТЕЛЬ» ЛЕНИНСКИЙ РАЙОННЫЙ ФИЛИАЛ СЕКЦИЯ МЕДИЦИНЫ ИЗУЧЕНИЕ АНТРОПОМЕТРИЧЕСКИХ ДАННЫХ УРОВНЯ ФИЗИЧЕСКОГО

Название:Характеристика структуры, понятия и принципов государственного аппарата и функций ветвей власти в системе механизма государства
Просмотров:88
Описание: Содержание Введение Глава I. Понятия государственного аппарата и механизма государства 1. Соотношение государственного аппарата с механизмом государства 2. Механизм государства как организация государс

Название:Признаки и свойства социальных процессов
Просмотров:151
Описание: РОССИЙСКАЯ ФЕДЕРАЦИЯ МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТЮМЕНСКИЙ ГОСУДАРСТВЕН

Название:Сравнительная характеристика потребительских свойств сотовых телефонов
Просмотров:87
Описание: Содержание Введение Глава 1. Характеристика потребительских свойств сотовых телефонов 1.1 История создания сотовых телефонов 1.2 Классификация и ассортимент сотовых телефонов 1.3 Потребительские свойств

Название:Анализ функций юридической службы на предприятиях, организациях и учреждениях
Просмотров:68
Описание: Содержание Введение Глава 1. Понятие юридической службы 1.1 Сущность, задачи и значение юридической службы. 1.2 Функции юридической службы. Глава 2. Эффективная организация работы юридической службы 2.1 П

 
     

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