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


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

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

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

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

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






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

Название:Поле. Примеры полей. Свойства полей. Поле рациональных чисел
Просмотров:585
Описание: Рассматривается определение поля, примеры и простейшие свойства полей, определения подполя, простого поля и поля рациональных чисел. п.1. Определение поля. Определение. Пусть - кольцо с единицей 1. Элемент  из множ

Название:Производство, свойства и применение палладия
Просмотров:832
Описание: Введение История открытия элемента периодической таблицы № 46 Паладия довольно курьёзна и необычна….. Осенью 1803 года известный в Лондоне торговец минералами получил анонимное письмо с предложением: попытатьс

Название:Алюминий особой чистоты: свойства, применение, получение
Просмотров:470
Описание: Алюминий - легкий (плотность 2720 кг/мг) металл серебристо-белого цвета с голубоватым оттенком. Он достаточно тепло и электроироводен, коррозионно стоек и жароустойчив. Плавится при 658° С. Чистый алюминий мягок и не

Название:Обучение учащихся VII-VIII классов при освоении технологических операций на токарно-винторезном станке
Просмотров:616
Описание: Факультет технологии и предпринимательства специальность 030600 «Технология и предпринимательство» Кафедра технологии обработки конструкционных материалов и общетехнических дисциплин

Название:Обучение основам социальной информатики учащихся 8-9 классов
Просмотров:602
Описание: Департамент образования города Москвы ГОУ ВПО города Москвы «МОСКОВСКИЙ ГОРОДСКОЙ ПЕДАГОГИЧЕСКИЙУНИВЕРСИТЕТ» Кафедра информатики и прикладной математики             Дипломная рабо

 
     

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