2015-02-21 3 views
3

Некоторые классы в моей диаграмме классов должны ссылаться на конкретные экземпляры других классов или самих себя. Должен ли я просто моделировать их так же, как в объектной диаграмме, или есть лучший вариант? В общем: Можно ли комбинировать диаграммы классов и объектов, поскольку диаграммы объектов сами являются диаграммами классов?Диаграммы классов UML: ссылки на экземпляры?

спасибо!

+0

Можете ли вы уточнить, что «класс должен ссылаться на экземпляр». Это, честно говоря, не имеет для меня никакого смысла. –

+0

Я пытаюсь смоделировать список. У меня есть класс «Список», состоящий из класса «Элемент списка». Класс «Элемент списка» должен ссылаться на своего преемника, экземпляр «Элемент списка» и «Список» должен ссылаться на первый элемент списка. – Khayet

+0

Это нечто иное, чем вы просили. Далее вы все еще смешиваете экземпляр и класс. Что вы имеете в виду? –

ответ

2

UML2 представил композитную структурную схему именно для решения этой проблемы.

В составной диаграмме структуры вы можете показать классификаторы (например, классы) вместе с их внутренней композицией в терминах экземпляров.

Таким образом вы можете точно указать, какие экземпляры связаны с вашими объектами.

См. this article для подробного объяснения.

+1

Другая статья с хорошим объяснением - [uml-diagrams.org: Структурные диаграммы компоновки] (http://www.uml-diagrams.org/composite-structure-diagrams.html) – xmojmr

+1

ОП запрашивает «экземпляры ссылок класса», которые не является составной - просто абсурд (я думаю). Я попросил его объяснить ... –

+0

В составной диаграмме структуры вы можете показать классификаторы и их внутреннюю композицию в терминах * parts *. Части не являются экземплярами.Например, в CSD я могу показать класс Car с четырьмя частями колеса. Только * экземпляр * класса Car может иметь * экземпляры * класса Wheel. –

0

Я согласен с @Thomas Killian: вы хотите смешивать два разных представления.

На диаграмме классов вы сможете показывать мощности, но не отношения экземпляров. Кажется, ваш класс List - это не простой список, а цепочка/linked list.

A ListElement на самом деле является частью LinkedList. Два предшественника и преемник атрибуты себя типа ListElement (или как вы хотите назвать этот класс, роль узла может быть отмечена) будет достаточно, чтобы предложить поведение. Поскольку атрибут имеет мощность 1: 1 с инкапсулирующим классом, это относится к тому, что вы хотите моделировать. Переименование класса списка станет подсказкой для устройства чтения диаграмм.

Взгляните на Java Linked List source, если вам нужны некоторые идеи: это может помочь вам создать четкую структуру классов, первоначальный автор не так уж плох при разработке классов. В этом случае он подталкивает инкапсуляцию к избытку, но идея правильная.