Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.149.26.246] |
|
Страницы: (8) [1] 2 3 ... 7 8 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Дабы привнести нечто техническое давайте обсудим сабж?
|
Сообщ.
#2
,
|
|
|
Фигня. Предлагаю опрос - что лучше, танк или вертолёт
Добавлено К тому же причём вообще инкапсуляция? Обычно агрегированию противопоставляют наследование. |
Сообщ.
#3
,
|
|
|
Цитата OpenGL @ К тому же причём вообще инкапсуляция? Обычно агрегированию противопоставляют наследование. WTF? Инкапсуляция предполагает объединение данных, ровно и как агрегирование. Хочется тему за наследование (полагаю про виртуализацию, сиречь полиморфизм) - делай тему! Тут только про данные. |
Сообщ.
#4
,
|
|
|
JoeUser,
Цитата В первом сообщении - список параметров, по которым идет сравнение. Ну и было бы неплохо, если бы ты дал определения |
Сообщ.
#5
,
|
|
|
+1. У тебя, очевидно, какое-то своё понимание инкапсуляции. Озвучь его тогда.
|
Сообщ.
#6
,
|
|
|
Цитата JoeUser @ Инкапсуляция предполагает объединение данных, ровно и как агрегирование. Ничего подобного. Инкапсуляция означает снижения ссылок. А агрегирование это техника сокрытия связей в приватных полях и методах. Так что противопоставлять их можно. Но по сути то и то является техниками сокрытия информации. Что касается что лучше? Я бы в 4 из 5 случаев предпочел бы инкапсуляцию. Потому что агрегирование это все-равно что прятать проблему под ковёр. Вроде не видно но все равно воняет. |
Сообщ.
#7
,
|
|
|
Цитата Pavia @ ичего подобного. Инкапсуляция означает снижения ссылок. А агрегирование это техника сокрытия связей в приватных полях и методах. Так что противопоставлять их можно. Но по сути то и то является техниками сокрытия информации. Что касается что лучше? Я бы в 4 из 5 случаев предпочел бы инкапсуляцию. Потому что агрегирование это все-равно что прятать проблему под ковёр. Вроде не видно но все равно воняет. Это троллинг такой? Можно пожалуйста пример агрегирования в приватных методах привести? Я ненароком думал, что агрегирование, как и композиция определяют отношение A has B. А инкапсуляция это типа сокрытие информации. Цитата Pavia @ Потому что агрегирование это все-равно что прятать проблему под ковёр. Вроде не видно но все равно воняет. Из этого вывод, что всякие явошарпы с С++сами по сути используют проблемную идиому "прятать под ковер" и все написанное ПО, на этих языках, с использованием классов "воняет"? А можно пример, как надо, чтоб не воняло? |
Сообщ.
#8
,
|
|
|
|
Сообщ.
#9
,
|
|
|
Инкапсуляция подразумевает объединение данных и методик их обработки в единой неделимой сущности. Сокрытие тут как приятный бонус, способствующий охране инвариантов этой сущности, и которое в общем-то важнее инкапсуляции как таковой. Агрегирование представляет собой рассмотрение готовой сущности как части другой. Несложно представить некую систему, где сокрытие её агрегатов (возможно, только лишь некоторых) нафик не упёрлось и потому к применению не обязательно. Важно, что агрегирование предоставляет лёгкое повторное использование существующего в контексте другой, более ёмкой, задачи.
В общем-то я тоже не вполне понимаю, как их сравнивать. Добавлено Не, ну можно, конечно, вспомнить всякое там PImpl и вынести все данные в агрегат. Тогда противопоставить одно другому можно. Но это ведь по-любому будет лишь частный случай использования того и другого. В общем же случае критериев сравнения у них как бы и нет, задачи-то они призваны решать разные. |
Сообщ.
#10
,
|
|
|
Цитата Qraizer @ Агрегирование представляет собой рассмотрение готовой сущности как части другой. Согласно учебнику банды 4. Цитата Агрегирование подразумевает, что один объект владеет другим или несет за него ответственность. В общем случае мы говорим, что объект содержит другой объект или является его частью. Агрегирование означает, что агрегат и его составляющие имеют одинаковое время жизни. А гарантировать такое можно при сокрытие одного класса внутри другого. Цитата Qraizer @ Несложно представить некую систему, где сокрытие её агрегатов (возможно, только лишь некоторых) нафик не упёрлось и потому к применению не обязательно. Несложно, очень просто. Но это как раз таки верёвка что-бы выстрелить себе в ногу. Если у вас есть публичная ссылка кто-то захочет её использовать и тогда вы уже не сможете контролировать этот объект. Да конечно разработана теория мягких ссылок и жёстких. Но это всё равно нарушает потокобезапасность. |
Сообщ.
#11
,
Сообщение отклонено: JoeUser -
|
Сообщ.
#12
,
Сообщение отклонено: JoeUser -
|
Сообщ.
#13
,
Сообщение отклонено: JoeUser -
|
Сообщ.
#14
,
|
|
|
Цитата D_KEY @ Ну и было бы неплохо, если бы ты дал определения Цитата OpenGL @ +1. У тебя, очевидно, какое-то своё понимание инкапсуляции. Озвучь его тогда. Цитата JoeUser @ Инкапсуляция предполагает объединение данных, ровно и как агрегирование. Немного ошибся, но не много! Инкапсуляция - это объединение данных и обработчиков (методов), а агрегирование - грубо говоря, помещение "поглощаемого объекта в поглощающий". Во втором случае могут быть и отдельные экземпляры классов, а могут быть и указатели на обработчики (методы и отдельные функции). А вопрос у меня возник на фоне идей Раста, где от наследования отказались, и от инкапсуляции (формально, вынесли в реализацию отдельно). |
Сообщ.
#15
,
|
|
|
Цитата JoeUser @ Немного ошибся, но не много! Инкапсуляция - это объединение данных и обработчиков (методов), а агрегирование - грубо говоря, помещение "поглощаемого объекта в поглощающий". Во втором случае могут быть и отдельные экземпляры классов, а могут быть и указатели на обработчики (методы и отдельные функции). А вопрос у меня возник на фоне идей Раста, где от наследования отказались, и от инкапсуляции (формально, вынесли в реализацию отдельно). Агрегирование это по сути внедрение зависимостей. Инкапсуляция - скрытие деталей реализации под капотом(ну грубо говоря). Это вроде как ортогональные вещи, как их сравнивать Допустим передача параметра в конструктор - агрегация, а реализация интерфейса в классе - инкапсуляция. |