Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
BigDanceMouse
5 / 5 / 1
Регистрация: 26.01.2014
Сообщений: 69
1

Объясните про агрегацию (она же композиция, она же включение)

26.09.2014, 11:32. Просмотров 1119. Ответов 5
Метки нет (Все метки)

Добрый день!
В одной очень умной книжке на англ языке встретился с понятием Object Composition. Нашел варианты перевода как агрегация, включение и композиция. Что это такое мне не совсем понятно (кроме того что это альтернатива наследования) по этому прошу дать объяснение:
1. Что это, собственно, за зверь такой,
2. Как он реализуется в Obj-C,
3. В каких случаях его лучше применять,
4. Правильно ли я понимаю что , создав например UITableViewController, принимающий протоколы TableViewDataSource и Delegate, я получаю объект, который одновременно является наследником UIViewController-а и агрегатом (или как это правильно называется) UITableView?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2014, 11:32
Ответы с готовыми решениями:

При нажатии на форму она зависает, и требуется просто убрать фокус с неё что бы она отвисла
При нажатии на форму она зависает, и требуется просто убрать фокус с неё что бы...

Задача Джонсона, она рабочая только нужно дописать чтобы она находила время простоя при оптимальной перестановке
Sub АлгоритмДжонсона() 'Курсовая работа по "Математическим методам" 'Группа...

Объясните конструкцию, как она работает
Здравствуйте, для меня остается загадкой вот такая конструкция в файле...

Включение действий программы, когда она не в фокусе, по средством заранее заданной клавиши
Алоха, народ! Нужно, чтобы в программе определённые действия могли быть...

Хотелось бы узнать что это за программа LabView. Где и для чего она используется. И перспективна ли она то есть стоит ли ее изучать?
Не ругайте если не в том разделе создал тему. Вообщем вопрос такой. Хотелось...

5
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
26.09.2014, 12:35 2
Агрегация != композиции.
С точки зрения терминологии можно рассмотреть агрегацию как "слабую" связь нескольких сущностей.
Где под "слабой" связью я подразумеваю то, что обе сущности являются независимыми друг от друга.
Например у вас есть системный блок и клавиатура подсоединенная к нему через интерфейс. Возьмите молоток и разбейте мышь - сситемный блок останется.

Композиция же подразумевает "сильную" связь между объектами типа master-slave.
Если позволите можно рассмотреть связь фараона к его рабам/женам.
Когда фараон умирал - всю его свиту убивали и хоронили вместе с фараонам.
Хотя этот пример мне нравится меньше чем пример из википедии про дом, в котором есть комнаты, ибо тут прямая связь, а в примере с фараонами происходило действо убиения при срабатывании триггера на событие смерти фараона

В вашем примере (4) UITableViewController будет включать в себя UITableView, создавая композицию.
Агрегация будет у вас тогда, когда у вас есть UITabBarController с композицией к UIViewController(1) и UIViewController(2).
Вот между UIViewController 1 и 2 будет композиция, если у них есть указатели друг на друга.
0
noname_club
106 / 97 / 12
Регистрация: 01.05.2013
Сообщений: 603
26.09.2014, 12:56 3
какие слова то умные.

wikipedia.org/wiki/Агрегирование_(программирование)

Наследование vs Композиция vs Агрегация
0
BigDanceMouse
5 / 5 / 1
Регистрация: 26.01.2014
Сообщений: 69
26.09.2014, 22:31  [ТС] 4
zulkis, noname_club, Все это время я думал =))
Если, к примеру, я создаю в контроллере экземпляр UIAlertView с делегатом == self, то это будет композиция, так как мой контроллер владеет протоколом Алерта?
А если я в контроллере перехожу в другой контрллер, которому передаю какие-то данные, то это будет агрегация?
Как-то эта тема оказалась достаточно сложной для меня.
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
26.09.2014, 22:45 5
BigDanceMouse, протоколом нельзя владеть :/
Его можно реализовать...
0
BigDanceMouse
5 / 5 / 1
Регистрация: 26.01.2014
Сообщений: 69
26.09.2014, 23:58  [ТС] 6
zulkis, В смысле: мой контроллер владеет экземпляром алерта. Принимает протокол алерата. В остальном я правильно понял?
0
26.09.2014, 23:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2014, 23:58

Объясните, как работает sizeof() и зачем она в этой программе
Напишите программу, которая, используя только унарные, бинарные операторы и...

STM32F2xx, STM32F4xx: правда про re-mapping, где она?
По тому, что почитал в сети, сложилось ощущение, что UART можно положить на...

Заметил при включениях рябь монитора при включение win 7. Спустя некоторое время она проходит.
У меня возникла вот такая вот проблема с Gigabyte GA-78LMT-S2P. Имею такую вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru