На этом шаге рассмотрим типичные приемы моделирования статических и динамических типов в UML.
Большинство объектно-ориентированных языков программирования статически типизировано. Это означает, что с объектом в момент его создания связывается определенный тип (даже несмотря на то, что объект, вероятно, будет впоследствии играть различные роли). Следовательно, клиенты, использующие объект, взаимодействуют с ним через разные наборы интерфейсов, которые представляют интересующие их множества операций (возможно, перекрывающиеся).
Моделирование статической природы объекта может быть показано на диаграмме классов. Однако когда вы моделируете, скажем, бизнес-объекты, которые обычно изменяют свой тип в потоке работ, иногда целесообразно подчеркнуть динамическую природу их типа, задав ее явным образом. При таких обстоятельствах в течение своего жизненного цикла объект может принимать и терять типы. Смоделировать жизненный цикл объекта можно при помощи машины состояний (конечного автомата).
Чтобы смоделировать динамический тип, необходимо:
На рис. 1 показано, какие роли исполняют экземпляры класса Person (Человек) в системе управления персоналом.
Рис.1. Моделирование динамических типов
По диаграмме видно, что экземпляры класса Person могут быть одного из следующих типов: Candidate (Кандидат), Employee (Работник) или Retiree (Пенсионер).
Когда вы моделируете интерфейсы в UML, помните, что каждый из них должен представлять соединение в системе, отделяющее спецификацию от реализации. Хорошо структурированный интерфейс обладает следующими свойствами:
Изображая интерфейс в UML, учитывайте следующее:
На следующем шаге рассмотрим один из способов организации элементов модели в UML - пакеты.