Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Евгений / идз1 / Пособие_Об_анал.doc
Скачиваний:
19
Добавлен:
31.03.2015
Размер:
1.44 Mб
Скачать

1.6.7. Общая схема на данный момент

Мы выбрали объекты с помощью стратегий и образцов. На рис. 1.18 показана общая схема результата этого отбора.

Рис. 1.18. Общая схема на данный момент

1.7. Применение стратегий для определения обязанностей объектов проблемной области

Каждый объект и каждая объектная модель имеют свои обязанности, или обязательные функции.

Объект знает о себе самом.

Объект знает другие объекты.

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

Наша задача — с помощью стратегий определить обязанности системы (в плане знаний и дейст­вий) в следующих аспектах:

— что я знаю;

— кого я знаю;

— что я делаю.

1.7.1. Обязанности актеров и участников Актер: человек

А. Определение обязанности: "что я знаю"

#52. Стратегия "Определение атрибутов актера и участника"

• Для актера рассмотрите: имя, адрес, телефон.

• Для участников рассмотрите: номер, дату и время (возможно, конечные дату и время), пароль, уровень авторизации.

Что нужно знать о каждом объекте person? По-видимому, в любой момент о нем нужна одна и та же информация (все равно, кассир он или покупатель) (рис. 1.19.):

— имя;

— телефон;

— адрес.

Рис. 1.19. Человек: «что я знаю»

Б. Определение обязанности: "кого я знаю".

Кого знает объект person?

#72. Стратегия "Определение объектов, которых я знаю"

• Это аспект возникающего объекта программного обеспечения: "Я знаю другие объекты, связанные с реальным объектом, абстракцией которого я являюсь".

• Выберите связанные объекты, чтобы: точно знать, кому посылать сообщение (по одному или по нескольким сценариям); отвечать на запрос об объектах, непосредственно связанных с этим запросом.

Особую помощь может оказать следующая стратегия.

#74. Стратегия «Определение связей между объектами»: определение обязанностей для актера и участника кого я знаю (образцы игроков)

• Для актера включите в модель связь между ним и его участниками.

•Для участника включите в модель связь между ним, его актером и его транзакциями.

Объект personзнает объекты своих участников, а каждый объект participant (участник) знает свой объектperson(рис. 1.20).

Рис. 1.20. Человек: «кого я зною»

В. Определение обязанности: "что я делаю".

#89. Стратегия "Основные службы"

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

• Основные действия: получить, установить; добавить (связанный объект), исключить (связан­ный объект); создать (то, что делает класс) и инициировать, удалить.

• Замечание: атрибуты являются собственными по соглашению. В сценариях используйте службы "get<attributename>" и "set<attributename>" для доступа к значениям атрибутов.

• Основными службами DM для объектов управления данными являются поиск, загрузка и сохранение.

Что должен делать объект person? То же самое, что любой другой объект:

— получить (get) ... значение атрибута;

— установить (set) ... значение атрибута;

— добавить (add) ... связь с другим объектом;

— исключить (remove) ... связь с другим объектом;

— удалить (delete) ... данный объект.

Аналогично, сам класс personдолжен делать то же самое, что и любой класс:

— создать и инициировать (createandinitialize) ... новый объект.

В объектной модели эти основные службы не нужны, они лишь иногда используются в представ­лении сценария. А если вы уже разместили их повсюду? Тогда придется к каждому содержащему объ­екты классу добавить по полдюжины отметок. Это значительно усложнит модель и вряд ли увеличит ее эффективность. Дело в том, что нотация не произвольна, и при усложнении модели необходимо делать ее более доступной для понимания.

("Упростить — значит удалить не обязательное, чтобы выявить необходимое." Ханс Хофман)

#94. Стратегия "Определение служб актера и участника"

• Для актера или участника нужны службы: calculate for me,rate me,is<value>.

» •Для актера как множества нужны службы: howmany,howmuch,rankparticipants,calculateoverparticipants(плюс службы для введения в действие бизнес- правил на всем этом множестве).

• Для участника как множества нужны службы: howmany,howmuch,ranktransactions,calculateovertransactions(плюс службы для выполнения бизнес- правил на всем этом множестве).

Обычно более интересно поведение объектов participant типа "что я делаю".

Соседние файлы в папке идз1