Отображение множественности между подклассами наследования и другим классом наследования

uml class-diagram

638 просмотра

2 ответа

Рассмотрим следующую диаграмму классов.введите описание изображения здесь

Мне нужно выполнить два условия в моей модели:

1 - Nodeможет иметь только 1 cutted Line, но может иметь 0 или много Lineэкземпляров.

2- Узел происходит из или cutted Line, или из Line( но не из обоих )

Сначала я нарисую модель домена ниже. Но потом я решил уменьшить сложность путем наследования Edge.введите описание изображения здесь

Кажется, что первое решение покрывает второе требование, но оно не покрывает множественность. К сожалению, второе решение охватывает кратность, но не второе условие. Как я могу нарисовать его, чтобы удовлетворить оба условия? Обновление: я, наконец, придумаю это решение: введите описание изображения здесь

Но я не уверен, правда это или нет?

Автор: Salman Lashkarara Источник Размещён: 08.11.2019 11:08

Ответы (2)


0 плюса

Решение

Эта ситуация называется производным союзом .

А Nodeпроисходит от или CuttedLine, или Line(но не оба)

Ассоциация между Lineи Node(или CuttedLine) устанавливает поднабор ассоциации между Edgeи Node, потому что если a Nodeпроисходит от Line(или CuttedLine), то:

  • это исходит от Edge
  • это Edgeтипа Line(или CuttedLine)

Кроме того, связь между Edgeи Nodeявляется производным от ассоциаций между Lineи Nodeи между ними CuttedLineи Node, потому что , если Nodeприходит от Edge, то она исходит от CuttedLineили исходит от Line. UML определяет производное объединение как «объединение всех свойств, которые ограничены его подмножеством».

Поскольку Nodeпроисходит от одной Edge(мощность 1) и обобщение не пересекаются , то отсюда следует , что Nodeпроисходит либо из А Lineили CuttedLine, но не одновременно. (Объединение двух различных наборов имеет один элемент, если один из наборов пуст, а другой содержит один элемент.)

схема

Автор: Javier Размещён: 21.08.2016 11:37

0 плюса

Я думаю, что вы должны просто пойти со вторым изображением, поскольку оно описывает модель, как задумано. Вы все еще можете добавить Edgeкласс в качестве общей формы Lineи CuttedLine. Просто у него нет разъемов Node.

В качестве альтернативы вы можете использовать первое и добавить ограничения, которые объясняют различные кратности.

Автор: qwerty_so Размещён: 20.08.2016 10:06
Вопросы из категории :
32x32