На этом шаге рассмотрим моделирование простых коопераций в UML.
Ни один класс не существует сам по себе. Каждый из них работает в кооперации с другими, чтобы обозначить некую общую семантику, которая недостижима при автономном использовании всех тех же классов. Таким образом, наряду со словарем системы вам понадобится обратить внимание на визуализацию, специфицирование и документирование различных способов взаимодействия сущностей из этого словаря. Используйте диаграммы классов для представления таких коопераций.
Чтобы смоделировать кооперацию, необходимо:
На рис. 1 в качестве примера показан набор классов, описывающих реализацию автономного робота. Акцент сделан на классы, связанные с механизмом перемещения робота по заданному пути. Вы найдете здесь один абстрактный класс Мотор (Motor) с двумя конкретными потомками – МоторПоворотногоМеханизма (SteeringMotor) и ГлавныйМотор (MainMotor). Оба потомка наследуют от своего родителя Мотор пять операций. И оба они, в свою очередь, представлены как часть другого класса – Привод (Driver). Класс АгентТраектории (PathAgent) имеет ассоциацию "один-к-одному" с Привод и "один-ко-многим" – с ДатчикСтолкновений (CollisionSensor). Никаких атрибутов и операций для АгентТраектории не показано, хотя его обязанности и заданы.
Рис.1. Моделирование простой кооперации
В этой системе участвует много других классов, но диаграмма, которую мы рассматриваем, сосредоточена только на перемещении робота. В то же время некоторые классы, представленные на ней, можно найти и на других диаграммах. Например, хотя это здесь и не показано, класс АгентТраектории кооперируется по меньшей мере с двумя другими: Окружение (Environment) и АгентЦели (GoalAgent) в механизме более высокого уровня, управляющем разрешением конфликтных ситуаций, в которых может оказаться робот. Классы ДатчикСтолкновений и Привод, а также их части кооперируются с классом АгентОтказа (FaultAgent) в составе механизма, отвечающего за непрерывную диагностику оборудования робота на предмет разнообразных ошибок. Фокусируя внимание на каждой из этих коопераций в разных диаграммах, вы создаете понятное представление о системе с разных точек зрения.
На следующем шаге рассмотрим моделирование логической схемы базы данных.