printОбъекты

printОтношения между объектами

Сами по себе объекты не представляют никакого интереса: только в процессе взаимодействия объектов реализуется система.
Отношения двух любых объектов основываются на предположениях, которыми один обладает относительно другого: об операциях, которые можно выполнять, и об ожидаемом поведении. Особый интерес для объектно-ориентированного анализа и проектирования представляют два типа иерархических соотношений объектов: связь и агрегация.
Связь – это физическое или концептуальное соединение между объектами. Объект сотрудничает с другими объектами через связи, соединяющие его с ними. Другими словами, связь – это специфическое сопоставление, через которое клиент запрашивает услугу у объекта-сервера или через которое один объект находит путь к другому. Только вдоль связи один объект может послать сообщение другому. Связь между объектами и передача сообщений обычно односторонняя и инициализируется клиентом, но данные передаются в обоих направлениях.
Участвуя в связи, объект может выполнять одну из следующих трех функций:
  • Воздействие. Объект может воздействовать на другие объекты, но сам никогда не подвергается воздействию других объектов; в определенном смысле это соответствует понятию активный объект.
  • Исполнение. Объект может только подвергаться воздействию со стороны других объектов, но он никогда не выступает в роли воздействующего объекта.
  • Посредничество. Такой объект может выступать как в активной, так и в пассивной роли; как правило, объект-посредник создается для выполнения операций в интересах какого-либо активного объекта или посредника.
Чтобы клиент мог послать сообщение серверу, надо, чтобы сервер был видим для клиента. В принципе есть следующие четыре способа обеспечить видимость:
  • Сервер глобален по отношению к клиенту.
  • Сервер (или указатель на него) передан клиенту в качестве параметра операции.
  • Сервер является частью клиента.
  • Сервер локально порождается клиентом в ходе выполнения какой-либо операции.
Какой именно из этих способов выбрать – зависит от тактики проектирования.
Агрегация может означать физическое вхождение одного объекта в другой, но не обязательно. Самолет состоит из крыльев, двигателей, шасси и прочих частей. С другой стороны, отношения акционера с его акциями – это агрегация, которая не предусматривает физического включения. Акционер монопольно владеет своими акциями, но они в него не входят физически. Это, несомненно, отношение агрегации, но скорее концептуальное, чем физическое по своей природе.
Выбирая одно из двух – связь или агрегацию – надо иметь в виду следующее. Агрегация иногда предпочтительнее, поскольку позволяет скрыть части в целом. Иногда, наоборот, предпочтительнее связи, поскольку они слабее и менее ограничительны. Принимая решение, надо взвесить все.
Объект, являющийся частью другого объекта (агрегата), имеет связь со своим агрегатом. Через эту связь агрегат может посылать ему сообщения.
loading