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