Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы Осадчий А.В. гр.010902.docx
Скачиваний:
9
Добавлен:
24.04.2019
Размер:
143.34 Кб
Скачать

59. Природа объекта. Состояние, поведение, идентичность объекта

Объекты не существуют изолировано, а поддаются влиянию или сами влияют на другие объекты. Влияние одного объекта на другой, с целью вызова соответствующей реакции, называется операцией. Как будет показано ниже, объекты взаимодействуют через посылку сообщений.

Поведение - это то, как объект действует и реагирует; поведение выражается в терминах состояния объекта и передачи сообщений. Другими словами, поведение объекта - это его наблюдаемая и внешне проверяемая деятельность.

Состояние объекта представляет суммарный результат его поведения.

Идентичность- это такое свойство объекта, который отличает его от всех других объектов.

60. Отношения между объектами. Связи. Агрегация

Собственно объекты не представляют никакой интерес: лишь в процессе взаимодействия объектов реализуется система. Отношения двух любых объектов основываются на предположениях, которыми один владеет относительно другого: об операциях, что можно выполнять, и об ожидаемом поведении. Особенный интерес для объектно-ориентированного анализа и проектирования представляют два типа иерархических соотношений объектов: связь и агрегация. Эти два типа отношений можно назвать отношениями старшинства и "отец/потомок" соответственно.

Принимая участие в связи, объект может выполнять одну из следующих трех ролей:

  • Актер. Объект может влиять на другие объекты, но сам никогда не поддается влиянию других объектов; в определенном содержании это отвечает понятию активный объект;

  • Сервер. Объект может лишь поддаваться влиянию со стороны других объектов, но он никогда не выступает в роли объекта, который влияет;

  • Агент. Такой объект может выступать как в активной, так и в пассивной, роли; как правило, объект-агент создается для выполнения операций в интересах

При обеспечении связей между объектами нужно позаботиться об их видимости и синхронизации.

Видимость. Пусть есть два объекта А и В и связь между ними. Для того, чтобы А мог послать сообщение В, нужно, чтобы В был в каком-то содержании видимым для А. Ми можем не заботиться об этом на стадии анализа, но когда дело доходит до реализации системы, мы должны обеспечить видимость связанных объектов.

В принципе есть следующие четыре способа обеспечить видимость.

1. Сервер является глобальным относительно клиента;

2. Сервер (или указание на него) передан клиенту как параметр операции;

3. Сервер является частью клиента.

4. Сервер локально порождается клиентом в ходе выполнения какой-либо операции.

Какой именно из этих способов избрать - зависит от тактики проектирования.

Синхронизация. Когда один объект посылает за связью сообщение другому, связанному с ним, они, как говорят, синхронизируются. В строго последовательном дополнении синхронизация объектов реализуется именно в запуске метода. Однако во много текущей системе объекты требуют более утонченной схемы передачи сообщений, чтобы развязать проблемы взаимного исключения, типові для параллельных систем. Активные объекты собственно выполняются как потоки, потому присутствие других активных объектов на них обычно не влияет. Если же активный объект имеет связь с пассивным, возможны следующие три подхода к синхронизации:

1. Последовательный — семантика пассивного объекта обеспечивается в присутствии лишь одного активного процесса;

2. Защищенный - семантика пассивного объекта обеспечивается в присутствии многих потоков управления, но активные клиенты должны договориться и обеспечить взаимное исключение;

3. Синхронный - семантика пассивного объекта обеспечивается в присутствии многих потоков управления; взаимное исключение обеспечивает сервер.

Агрегация объектов

В то время, как связки помечают равноправные или "клиент-серверные" отношения между объектами, агрегация описывает отношения целого и части, которые приводят к соответствующей иерархии объектов, причем, идя от целого {агрегату), мы можем прийти к его частям (атрибутам).

Выбирая одно из двух - связь или агрегацию - нужно иметь в виду следующее. Агрегация иногда более подавляюще, поскольку позволяет спрятать части в целом. Иногда наоборот более подавляюще связки, поскольку они слабее и менее ограничительные. При агрегации отпадают проблемы видимости и синхронизации. Принимая решение, нужно взвесить все.