На этом шаге рассмотрим связь абстракции и экземпляра в UML.
Экземпляры не существуют сами по себе: они почти всегда связаны с абстракцией. На языке UML чаще всего моделируют экземпляры классов (называемые объектами), хотя также бывают экземпляры и других сущностей, таких как компоненты, узлы, варианты использования и ассоциации. В UML экземпляр легко отличить от абстракции – для этого надо просто подчеркнуть его имя.
Объект в общем случае занимает некоторое место в реальном или концептуальном мире, и над ним можно производить те или иные операции. Например, экземпляром узла обычно является компьютер, физически расположенный в некоем помещении; экземпляром компонента – файл, размещенный в том или ином каталоге; экземпляр записи о клиенте занимает какой-то объем оперативной памяти компьютера. Экземпляр траектории полета самолета тоже являет собой нечто конкретное, поддающееся обработке математическими методами.
С помощью UML допустимо моделировать не только непосредственные физические экземпляры, но и менее конкретные сущности. Например, абстрактный класс по определению не может иметь непосредственных экземпляров. Разрешается, однако, моделировать косвенные экземпляры абстрактных классов, чтобы показать, как данный класс можно использовать в качестве прототипа. Строго говоря, такого объекта не существует, но с практической точки зрения он позволяет поименовать любой потенциальный экземпляр конкретного потомка этого абстрактного класса. Тоже самое относится и к интерфейсам. Хотя они по определению не могут иметь непосредственных экземпляров, можно смоделировать экземпляр-прототип интерфейса, который будет представлять один из потенциальных экземпляров конкретных классов, реализующих данный интерфейс.
Моделируемые экземпляры помещают в диаграммы объектов, если надо показать их структурные детали, или в диаграммы взаимодействия и деятельности, если нужно визуализировать их участие в динамических ситуациях. Хотя обычно этого не требуется, их можно включать и в диаграммы классов, если надо показать связь объекта и его абстракции.
На следующем шаге рассмотрим типы экземпляров в UML.