![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Vardes |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 131 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну вот,возьму ка я на себя ответственность и открою 701-ую тему в данной тематике.Этот топик хотелось бы посвятить такой терминалогии как Агрегирование.Узнать для чего это надо и с чем это едят,т.к. в учебниках я не нашёл чёткого описания,а в инете мало,что говорится об этом
![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
То, что ты написал - больше напоминает как раз наследование, а не агрегацию... Я же написал, что подразумевается (то, что лежит по ссылке, и ты этого не понял):
Есть у тебя задача: реализовать множество... Только не обычное (оно как-то уже реализовано), а множество, хранящее строки... Что будешь делать? Предлагаю: хранить слова, которые "содержатся" в нашем "множестве" в виде линейного списка (если тебе не особо важна скорость), или в виде дерева (если скорость более важна), а может быть - хеш-таблица, или еще что-нибудь... Не столь важно, ты просил пример. Для примера берем список... Вот что-то подобное делаем (вообще-то уже есть реализованные списки, но в целях обучения сделаем свой): type Реализация этих методов уже приводилась на форуме, в разделе FAQ -> ООП, поэтому еще раз я этого делать не буду, покажу, что именно подразумевает агрегирование: когда ты работаешь с множествами, есть функции In/Include/Exclude, которые проверяют наличие/добавляют/удаляют элемент из множества соответственно, правда? Так вот, чтобы с новым "множеством" можно было работать с использованием таких же функций, сделаем такой объект: type Теперь ясно, что значит "экземпляр одного класса содержится в другом"? Именно содержится, ибо Множество - не вид Связного Списка, оно РЕАЛИЗОВАНО С ПОМОЩЬЮ связного списка... Чтобы у тебя не возникло вопроса, а зачем, собственно, делать методы include/exclude, а не пользоваться существующими методами списка напрямую, я сразу тебе скажу: для сокрытия внутренней реализации объекта... Тебя, как пользователя, не должно интересовать, КАК реализовано хранение информации во "множестве". Завтра программист решит, что лучше всего хранить данные в AVL-дереве, и что? Нет у него таких методов, будешь переписывать все программы? Нет, для этого и существует ИНТЕРФЕЙС класса. Если ты работаешь только через ИНТЕРФЕЙС, предоставляемый тебе классом - тебе нечего беспокоиться о внутреннем представлении данных, оно СКРЫТО от тебя... |
![]() ![]() |
![]() |
Текстовая версия | 30.07.2025 2:21 |