08 (1158687), страница 2
Текст из файла (страница 2)
Обязанности классов, определенные в процессе анализа и документированные в виде «операций анализа», преобразуются в операции, которые будут реализованы в коде. При этом:
-
каждой операции присваивается краткое имя, характеризующее ее результат;
-
определяется полная сигнатура операции;
-
создается краткое описание операции, включая смысл всех ее параметров;
-
определяется видимость операции: public (+), private (–), protected (#) или package (~);
-
определяется область действия операции: операция объекта или операция класса.
Уточнение атрибутов классов заключается в следующем:
-
задается его тип атрибута и значение по умолчанию (необязательно);
-
задается видимость атрибутов: public (+), private (–), protected (#) или package (~);
-
при необходимости определяются производные (вычисляемые) атрибуты (/).
Если в системе присутствуют объекты со сложным поведением, то строят диаграммы состояний. Построение диаграмм состояний может оказать следующее воздействие на описание классов:
-
события вызова соотносятся с вызываемыми операциями класса;
-
особенности конкретных состояний могут повлиять на методы, реализующие операции;
-
описание состояний и переходов может помочь при уточнении атрибутов класса.
В процессе проектирования связи между классами подлежат уточнению.
Некоторые ассоциации преобразуются в зависимости (в случаях, когда соединения экземпляров классов не стабильны, т. е. временны, например, если объект является параметром или результатом операции или ее локальной переменной). Оставшиеся ассоциации преобразуются в агрегации или композиции. Композиции бывают 2-х видов:
-
безраздельно обладает (зависимость по существованию, транзитивность, асимметричность, стационарность);
-
обладает (зависимость по существованию, транзитивность, асимметричность).
Виды агрегаций:
-
включает (зависимость по существованию, транзитивность);
-
участник (нет ограничений).
Определяются направления связей, при этом учитываются взаимодействия объектов, а также ожидаемое количество экземпляров классов. Классы ассоциаций являются артефактами моделирования и не поддерживаются языками программирования, поэтому они должны быть преобразованы в обычные классы. Это преобразование называется материализацией связи. Структурные связи с множественными полюсами уточняются. Им приписываются квалификаторы. Квалификатор – атрибут или набор атрибутов ассоциации, значение которых позволяет выбрать для конкретного объекта квалифицированного класса множество целевых объектов на противоположном конце соединения. Например, если в папке может находиться не более одного файла с заданным именем, то имя файла – квалификатор ассоциации папка -> файл. Соответствующие атрибуты у целевых классов должны быть удалены. Квалификатор не обязательно состоит из одного атрибута (также как и потенциальный ключ записей в таблице).
Для множественных полюсов указываются типы: множество {set}, упорядоченное множество {ordered}, мультимножество {bag}, упорядоченное мультимножество {sequence}. На диаграммы могут быть явно указаны классы-контейнеры (список, хэш-таблица и проч.). Классам с необязательными связями добавляются операции проверки, существования соединения между их экземплярами.
Связи обобщения могут преобразовываться в ситуациях с так называемой метаморфозой подтипов, когда есть необходимость менять тип объектов (например, преобразовывать студента-заочника в студента дневного отделения или наоборот).
5