Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Типичные приемы моделирования Реализация прецедента

Одно из назначений коопераций состоит в моделировании прецедентов (см. гла­ву 16). Как правило, при анализе системы вы руководствуетесь тем, как она может использоваться. Переходя же к этапу реализации, вы должны реализовать иденти­фицированные прецеденты в виде конкретных структур и поведений. В общем слу­чае каждый прецедент должен быть реализован одной или несколькими коопера­циями. Если рассматривать систему в целом, то классификаторы, участвующие в кооперации, которая связана с некоторым прецедентом, будут принимать учас­тие и в других кооперациях.

Моделирование реализации прецедента состоит из следующих этапов:

1. Идентифицируйте те структурные элементы, которые необходимы и доста­точны для осуществления семантики прецедента.

2. Организуйте эти структурные элементы в диаграмму классов.

3. Рассмотрите отдельные сценарии, которые представляют данный прецедент. Каждый сценарий описывает один из путей прохождения прецедента.

4. Отобразите динамику этих сценариев на диаграммах взаимодействия. Вос­пользуйтесь диаграммами последовательности, если нужно подчеркнуть

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

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

В большинстве случаев нет необходимости явно моделировать отношение между прецедентом и реализующей его кооперацией. Лучше оставить это на заднем плане модели и позволить инструментальным средствам воспользоваться имею­щейся связью для навигации между прецедентом и его реализацией.

Реализация операции

Еще одна цель, ради которой применяются кооперации, - это моделирование реализации операции (см. главы 4 и 9). Часто реализацию операции можно спе­цифицировать непосредственно в коде. Однако для тех операций, которые требу­ют совместной работы нескольких объектов, перед написанием кода лучше смоде­лировать реализацию при помощи кооперации.

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

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

Моделирование реализации операции осуществляется так:

1. Идентифицируйте параметры, возвращаемое значение if другие объекты, видимые для операции.

2. Если операция тривиальна, представьте ее реализацию непосредственно в коде, который можно поместить на задний план модели или явно визуа-лизировать в примечании (см. главу 6).

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

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

Так, на рис. 27.6 показан активный класс (см. главу 22) RenderFrame и рас­крыты три его операции. Функция progress достаточно проста и может быть реа­лизована сразу в коде, приведенном в примечании.

Однако операция render намного сложнее, и ее реализация возложена на коо­перацию Ray trace (трассировка лучей). Хотя на рисунке этого и нет, вы могли иы раскрыть кооперацию и увидеть ее структурную и поведенческую составляющие.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]