Ну вот,возьму ка я на себя ответственность и открою 701-ую тему в данной тематике.Этот топик хотелось бы посвятить такой терминалогии как Агрегирование.Узнать для чего это надо и с чем это едят,т.к. в учебниках я не нашёл чёткого описания,а в инете мало,что говорится об этом
Это одно из понятий ООП... Смотри, в чем дело: между объектами может существовать несколько видов отношений...
1) является: отношение предок-потомок. То есть Окружность является Фигурой, Волк является Животным, ... Это отношение определяется наследованием:
Type
TFigure = class
...
end;
TCircle = class(TFigure)
...
end;
Type
TAnimal = class
...
end;
TWolf = class(TAnimal)
...
end;
TypeЧто конкретно тебя интересует по этой теме?
TMyArray = class
// Тут - некоторая реализация работы с массивом
end;
TStack = class
arr: TMyArray; // Экземпляр типа Массив содержится в Стеке
...
end;
У меня такая задача,произвести агрегирование классов...И мне как бы нужно знать основы,как всё это происходит...Мне бы литературы по этому вопросу,но ничего найти не могу
А мне кто-нить может помочь по этому вопросу,какой-нить простой примерчик,мне больше и не надо
Вот тут был приведен пример агрегирования: http://forum.pascal.net.ru/index.php?s=&showtopic=13523&view=findpost&p=78864
(правда, реализация - на С++, но посмотри саму идею, что это такое, и как оно используется...)
Не смог я разобраться в коде нет у меня ещё такого опята, мне бы сначала Delphi обуздать.Мне тут рассказали про агрегирование так,что к примеру имеется у нас несколько классов наследуемых др. от др. с одинаковыми методами...мы создаём для них один общий класс и создаём массив этих классов,для каждого элемента которого запускается метод....
Но вот это всё на словах и не факт,что правильно....Прошу привести мне простенький пример...Просто мне курсач писать,и агрегирование обязательно вставить надо,поэтому не зная агрегирования,я не могу продумать весь алгоритм,а время уже поджимает,прошу помочь....
То, что ты написал - больше напоминает как раз наследование, а не агрегацию... Я же написал, что подразумевается (то, что лежит по ссылке, и ты этого не понял):
Есть у тебя задача: реализовать множество... Только не обычное (оно как-то уже реализовано), а множество, хранящее строки... Что будешь делать? Предлагаю: хранить слова, которые "содержатся" в нашем "множестве" в виде линейного списка (если тебе не особо важна скорость), или в виде дерева (если скорость более важна), а может быть - хеш-таблица, или еще что-нибудь... Не столь важно, ты просил пример. Для примера берем список... Вот что-то подобное делаем (вообще-то уже есть реализованные списки, но в целях обучения сделаем свой):
type
plist = ^tlist;
tlist = object
first, last: plist
procedure append(s: string); // Добавить строку в список
procedure remove(s: string); // Удалить строку из списка
function exists(s: string): boolean; // проверить, есть ли строка в списке
end;
type
tmyset = object
// А вот тут - внимание !!!
// Вот она - АГРЕГАЦИЯ: экземпляр объекта внедрен в твой класс !!! ...
set_instance: tlist;
// ...
function in_set(s: string): boolean;
procedure include(s: stiring);
procedure exclude(s: string);
procedure print; // Вывод "множества" куда-нибудь ...
// ... остальные методы
end;
// ... инициализация set_instance и прочая лабуда
function tmyset.in_set(s: string): boolean;
begin result := set_instance.exists(s) end;
procedure tmyset.include(s: stiring);
begin set_instance.append(s) end;
procedure tmyset.exclude(s: string);
begin set_instance.remove(s) end;
Оффтоп - неужели паскальный множественный тип сделанный по подобной схеме?
Для чего же тогда нужна данная процедура:
Vardes, я больше ничего тебе объяснять не буду... ты не ЧИТАЕШЬ моих объяснений, а просто бегло их просматриваешь! А я их не для того пишу. Понятно? Ответ на твой вопрос - в посте №7 (причем я ЗАРАНЕЕ, до того, как ты его задашь ответил тебе)...
my_set.add_to_the_struct(allocate_additional_space(my_set.type_of_set_node), s, __TO_TAIL__);, ты станешь пользоваться таким множеством? Я бы не стал... Посторяю последний раз: Include - СКРЫВАЕТ от тебя деталь внутренней реализации, она вызывается для того, чтобы ВНУТРИ НЕЕ сделать такой вызов, который будет эффективным В ЗАВИСИМОСТИ от внутреннего представления, тогда как НЕ ЗАВИСИМО от внутреннего представления данных пользователь (если он тебя вообще интересует) должен вызывать Include...
Ты что думаешь,так легко с обычного Pascal'я (не изучая объектную часть) сразу за неделю перейти на объекты в Delphi (я основы только изучил,не представлял даже себе всякие процедуры Include и Exclude),времени больше нет,проект надо свой делать..Не виноват я,что у меня нехватка времени,не могу я всё время программированием заниматься,др. дел полно...так что не сердчайте молодой человек...всё равно вам спасибо за ваши труды