В объектно-ориентированном программировании диаграмма объектов [1] в унифицированном языке моделирования (UML) представляет собой диаграмму , которая показывает полное или частичное представление структуры моделируемой системы в определенный момент времени.
В унифицированном языке моделирования (UML) диаграмма объектов фокусируется на некотором определенном наборе объектов и атрибутов , а также на связях между этими экземплярами. Коррелированный набор диаграмм объектов дает представление о том, как произвольный вид системы, как ожидается, будет развиваться с течением времени. Ранние спецификации UML описывали диаграммы объектов следующим образом: [2] [3]
«Диаграмма объектов — это граф экземпляров, включающий объекты и значения данных. Статическая диаграмма объектов — это экземпляр диаграммы классов; она показывает моментальный снимок подробного состояния системы в определенный момент времени. Использование диаграмм объектов довольно ограничено, а именно для демонстрации примеров структуры данных».
Последняя спецификация UML 2.5.1 явно не определяет диаграммы объектов, [4] но предоставляет нотацию для «экземпляров» классификаторов. [4] : 126
Диаграммы объектов и диаграммы классов тесно связаны [5] и используют почти идентичную нотацию. [6] Обе диаграммы предназначены для визуализации статической структуры системы. В то время как диаграммы классов показывают классы , диаграммы объектов отображают экземпляры классов ( объекты ). [7] Диаграммы объектов более конкретны, чем диаграммы классов . Они часто используются для предоставления примеров или выступают в качестве тестовых случаев для диаграмм классов. На диаграмме объектов обычно отображаются только аспекты, представляющие текущий интерес в модели.
Каждый объект и связь на диаграмме объектов представлены InstanceSpecification . Это может показать классификатор объекта (например, абстрактный или конкретный класс ) и имя экземпляра, а также атрибуты и другие структурные особенности с использованием слотов . Каждый слот соответствует одному атрибуту или особенности и может включать значение для этой сущности.
Имя в спецификации экземпляра опционально показывает имя экземпляра, разделитель ':' и опционально одно или несколько имен классификаторов, разделенных запятыми. Содержимое слотов, если таковые имеются, включается под именами, в отдельном отсеке атрибутов. Ссылка отображается как сплошная линия и представляет собой экземпляр ассоциации .
Рассмотрим один из возможных способов моделирования производства последовательности Фибоначчи .
На первой диаграмме объектов UML справа экземпляр в самой левой спецификации экземпляра называется v1 , имеет IndependentVariable в качестве классификатора, играет роль NMinus2 в FibonacciSystem и имеет слот для атрибута val со значением 0 . Второй объект называется v2 , принадлежит классу IndependentVariable , играет роль NMinus1 и имеет val = 1 . Объект DependentVariable называется v3 и играет роль N. Самый верхний экземпляр, анонимная спецификация экземпляра, имеет FibonacciFunction в качестве классификатора и может иметь имя экземпляра, роль и слоты, но здесь они не показаны. Диаграмма также включает три именованные ссылки, показанные в виде линий. Ссылки являются экземплярами ассоциации.
На второй диаграмме, в немного более поздний момент времени, объекты IndependentVariable и DependentVariable одинаковы, но слоты для атрибута val имеют разные значения. Имена ролей здесь не показаны.
В последней диаграмме объектов, еще более позднем снимке, задействованы те же три объекта. Их слоты имеют разные значения. Имена экземпляров и ролей здесь не показаны.
Если вы используете инструмент моделирования UML , вы обычно рисуете диаграммы объектов с использованием какого-либо другого типа диаграммы, например, на диаграмме классов . Экземпляр объекта может называться спецификацией экземпляра или просто экземпляром . Связь между экземплярами обычно называется связью . Другие сущности UML, такие как символ агрегации или композиции (ромб), также могут отображаться на диаграмме объектов.