![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
initmax |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
Перерыл инфы, пытаюсь разобраться в нижеизложеных понятиях, если чего не верно/полно прошу подправить
0) Делегирование : Создание классов с использованием объектов сторонних классов, например
Данный подход позволят создать новый класс на основе готовых объектов с дальнейшим вызовом их методов 1) Композиция || Агрегирование || Агрегация: Включение в тело класса тела сторонних классов, подразумевают методику создания нового класса из уже существующих классов
если в результате будут использованы методы из классов зачем это разделение на Композицию и Делегирование? только ради того дабы получить доступ к методам сторонних классов в теле базового класса не создавая при этом объект? Это сообщение отредактировал(а) powerOn - 13.10.2009, 23:21 |
||||||||||
|
|||||||||||
Старовъръ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 4 Всего: 10 |
Лень было все читать, просто напишу:
Делегирование - передача обязанностей другому объекту. Ассоциация - обычное владение объектом. Агрегация - владелец состоит из объектов, которые есть неотъемлемой его частью. Композиция - владелец состоит из объектов, которые есть неотъемлемой его частью, и эти объекты не могут жить вне владельца. -------------------- |
|||
|
||||
revenforv |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 6.8.2009 Где: Санкт-Петербург Репутация: нет Всего: нет |
Можете меня пнуть, но насколько помню агрегация и композиция это одно и тоже, просто второе ближе к проектированию, а первое к отношениям между объектами. Обычно агрегация подразумевает делегирование в той или иной форме. Можно например писать обертки и враперы таким образом, делегируя операции внутренним классам. Насколько помню, патерны bridge и adapter работают по этому принципу. А composite работает по принципу композиции (здесь в идет делегирование в неявной форме). Есть еще external iterator (или internal - поправьте меня), он делегирует выполнение операции каждому элементу который обходит. |
|||
|
||||
Старовъръ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 4 Всего: 10 |
Можно сказать так: агрегация - это разновидность ассоциации, когда один объект состоит из других. композиция - это разновидность агрегации, когда объект-владелец контролирует еще и жизненный цикл других объектов(т.е. они умирают вместе с ним, они не существуют вне его). В UML ассоциация обозначается обычной стрелочкой(некоторые обозначают без наконечника), агрегация - стрелочкой с ромбиком, композиция - стрелочкой с закрашенным ромбиком. Это сообщение отредактировал(а) Старовъръ - 14.10.2009, 08:07 -------------------- |
|||
|
||||
Andy_L20066 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 10.3.2008 Репутация: нет Всего: 1 |
привет, интересный вопрос... я когда-то читал нечто подобное...
вот что думаю по этому поводу: делегирование это нечто более "сложное" чем композиция, вот пример простой композиции:
здесь идет просто передача управления листу который фактически входит в состав обьекта A. Но это не совсем делегация, так как делегация предусматривает передачу обьекта (обьект1 передает получает риквест, и потом просто передает себя и риквест делегату(обьекту2). Ярким примером делегации является паттерн State, когда робота происходит в контексте, который делегирует себя конкретному обьекту (стейту), который изменяет контекст... вот здесь почитай про State: http://java-x.blogspot.com/2006/12/impleme...rn-in-java.html |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |