Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
| Vardes |
Сообщение
#1
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 131 Пол: Мужской Репутация: 0 |
Ну вот,возьму ка я на себя ответственность и открою 701-ую тему в данной тематике.Этот топик хотелось бы посвятить такой терминалогии как Агрегирование.Узнать для чего это надо и с чем это едят,т.к. в учебниках я не нашёл чёткого описания,а в инете мало,что говорится об этом
|
![]() ![]() |
| volvo |
Сообщение
#2
|
|
Гость |
То, что ты написал - больше напоминает как раз наследование, а не агрегацию... Я же написал, что подразумевается (то, что лежит по ссылке, и ты этого не понял):
Есть у тебя задача: реализовать множество... Только не обычное (оно как-то уже реализовано), а множество, хранящее строки... Что будешь делать? Предлагаю: хранить слова, которые "содержатся" в нашем "множестве" в виде линейного списка (если тебе не особо важна скорость), или в виде дерева (если скорость более важна), а может быть - хеш-таблица, или еще что-нибудь... Не столь важно, ты просил пример. Для примера берем список... Вот что-то подобное делаем (вообще-то уже есть реализованные списки, но в целях обучения сделаем свой): type Реализация этих методов уже приводилась на форуме, в разделе FAQ -> ООП, поэтому еще раз я этого делать не буду, покажу, что именно подразумевает агрегирование: когда ты работаешь с множествами, есть функции In/Include/Exclude, которые проверяют наличие/добавляют/удаляют элемент из множества соответственно, правда? Так вот, чтобы с новым "множеством" можно было работать с использованием таких же функций, сделаем такой объект: type Теперь ясно, что значит "экземпляр одного класса содержится в другом"? Именно содержится, ибо Множество - не вид Связного Списка, оно РЕАЛИЗОВАНО С ПОМОЩЬЮ связного списка... Чтобы у тебя не возникло вопроса, а зачем, собственно, делать методы include/exclude, а не пользоваться существующими методами списка напрямую, я сразу тебе скажу: для сокрытия внутренней реализации объекта... Тебя, как пользователя, не должно интересовать, КАК реализовано хранение информации во "множестве". Завтра программист решит, что лучше всего хранить данные в AVL-дереве, и что? Нет у него таких методов, будешь переписывать все программы? Нет, для этого и существует ИНТЕРФЕЙС класса. Если ты работаешь только через ИНТЕРФЕЙС, предоставляемый тебе классом - тебе нечего беспокоиться о внутреннем представлении данных, оно СКРЫТО от тебя... |
Vardes Агрегирование 23.11.2006 23:32
volvo Это одно из понятий ООП... Смотри, в чем дело: меж… 24.11.2006 0:32
Vardes У меня такая задача,произвести агрегирование класс… 24.11.2006 0:43
Vardes А мне кто-нить может помочь по этому вопросу,какой… 24.11.2006 23:37
volvo Вот тут был приведен пример агрегирования: Реализо… 25.11.2006 0:49
Vardes Не смог я разобраться в коде :wink: нет у меня ещ… 25.11.2006 2:16
Vardes
procedure tmyset.include(s: string);
… 25.11.2006 6:32
Bokul
Если я правильно понял, то реализованное volvo … 25.11.2006 6:46
Bokul Оффтоп - неужели паскальный множественный тип сдел… 25.11.2006 8:39
Vardes Для чего же тогда нужна данная процедура:
Я так с… 25.11.2006 12:27
volvo Vardes, я больше ничего тебе объяснять не буду... … 25.11.2006 16:33
Vardes Ты что думаешь,так легко с обычного Pascal'я (… 25.11.2006 18:39
Vardes :blink: 27.11.2006 0:12![]() ![]() |
|
Текстовая версия | 8.11.2025 13:44 |