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

Что совпадает, а что отличается Оплата и ее виды

Рассмотрим оплату и три ее вида: наличными, по чеку и по кредитной карточке. Что общего между ними и в чем разница?

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

Все виды оплаты знают:

— выплаченную сумму. Разница состоит в том, что каждый объект cash (наличные деньги) знает:

— выданные наличные деньги. Каждый объект check (чек) знает:

— банковский номер;

— номер счета;

— выданную сумму;

— код авторизации. Каждый объект credit (кредитная карточка) знает:

— тип карточки;

— номер карточки;

— срок действия:

— код авторизации.

Заметим, что check и credit имеют общий атрибут — код авторизации. Если общие атрибуты име­ют одинаковые имена и смысл и при этом можно использовать относящееся к данной области обоб­щение, в структуру gen-spec нужно внести новое обобщение, имеющее следующую структуру:

оплата

наличные

авторизованная оплата

чек

кредитная карточка

В результате будет явно выражена общность (рис.1. 35).

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

Каждая оплата знает соответствующую ей:

— продажу.

(И продажа знает соответствующие ей оплаты. Вспомните, что клиенты Х могут расплачи­ваться, используя наличные деньги, кредитные карточки и чеки, а также комбинировать их.) В этом виды оплаты похожи между собой. Различия между ними здесь не рассматриваются.

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

Общие службы остаются прежними. Разница в том, что в некоторых случаях необходима авториза­ция оплаты. Поэтому следует считать, что объект authorized payment (авторизованная оплата) может авторизовать самого себя. Добавим к модели службу:

— авторизовать.

Добавим к модели также обязанности для payment (и виды оплаты) (рис.1. 35).

Рис.1. 35. Оплата и виды оплаты: «что я знаю, кого я знаю, что я делаю»

Сеанс

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

Атрибуты объекта session(сеанс):

— дата начала;

— время начала;

— дата окончания;

— время окончания.

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

Объект session знает:

— свое регистрирующее устройство;

— своего кассира. (Каждое регистрирующее устройство и каждый кассир знают свои сеансы.)

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

Сеанс — это множество продаж за интервал времени. Он может выполнять следующие службы:

— подсчитывать, сколько (денег собрано) за интервал времени;

— подсчитывать число (продаж) за интервал времени. Добавим обязанности объекта session к объектной модели (рис.1. 36).

Рис.1. 36. Сеанс: "что я знаю, кого я знаю, что я делаю"

1.8. Применение образцов: определение обязанностей в проблемной области

Сейчас мы определим обязанности для каждого объекта PD (проблемной области) в аспекте "что я знаю, кого я знаю и что я делаю".

Рассмотрим образцы. Образец включает в себя стереотипные обязанности каждого объекта дан­ного образца. Покажем это на примере "множество-рабочий".

Множество-рабочий

Изучим фундаментальный образец объектного моделирования: множество-рабочий.

#1. Образец "Множество-рабочий" (фундаментальный образец)

• Множество-рабочий является фундаментальным образцом объектной модели.

• Все другие образцы — это его вариации.

• Типичные объектные взаимодействия

howMany —> calcForMe

calcOverWorkers —> calcForMe

howMuch —> calcForMe

rankWorkers —> rateMe

• Другие замечания "aboutMe" помогает понять, какие еще нужны атрибуты

"calcForMe" показывает, какие специальные вычисления могут понадобиться

"rankMe" уточняет, какие службы упорядочивания и сравнения нужны

"rateMe" помогает понять, какие службы самоконтроля необходимы

Объект collection (множество) знает некоторое число рабочих. Он делает только то, что относит­ся к множеству рабочих: вычисляет, оценивает и выбирает.

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

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

Образцов типа множество-рабочий может быть несколько. Далее описано использование некото­рых из них.

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