Неориентированный граф UML в ориентированный граф UML

Я пытался изменить это представление неориентированного графа UML (диаграммы классов) на ориентированный граф, но я застрял. Какие изменения необходимо внести и почему?

введите здесь описание изображения


person JavaStudentPanic    schedule 23.03.2021    source источник


Ответы (2)


чтобы сделать ваш график направленным, ребра должны иметь направление, для этого вы можете различать начальные и конечные узлы:

введите здесь описание изображения

Узлы и ребра исчезают, когда исчезает граф, поэтому вы можете иметь композиции, а не агрегации.

person bruno    schedule 23.03.2021

Для исходной диаграммы: рядом с 2 необходимо указать {неуникальный}

Для обеих диаграмм: выводится связь от графа к ребру; оба узла из одного ребра из одного графа

person user6580165    schedule 24.03.2021
comment
Я вообще не понял вашего ответа, и похоже не только я (DV не от меня). Из того факта, что по умолчанию ассоциация неуникальная, поэтому ваша первая часть ничего не меняет, в чем важно иметь направленные ребра? Вторая часть вашего ответа для меня еще более неясна, the association from "graph" to "edge" is derived: ее нет на диаграмме OP, или если ваше предложение состоит в том, чтобы получить ее, как она получена и на что направлены края? Пожалуйста, объясни - person bruno; 24.03.2021
comment
На самом деле по умолчанию ассоциация неуникальная - OMG® Unified Modeling Language® (OMG UML®) Version 2.5.1 '7.8.8.5 Attributes': isUnique : Boolean [1..1] = истинный - person user6580165; 25.03.2021
comment
выводится ассоциация графа с ребром context Edge::directedGraph, производный: from.directedGraph оба узла из одного ребра из одного графа context Edge inv: from.directedGraph= to.directedGraph - person user6580165; 25.03.2021
comment
ах да, вы правы, isUnique по умолчанию истинно, спасибо. Но это ничего не меняет в том, направлены ребра или нет, это просто позволяет иметь рефлексивное ребро, что не является вопросом. - person bruno; 25.03.2021
comment
и для вывода кажется, что вы все еще хотите иметь рефлексивные края, так что это не в тему. Ориентированный граф имеет направленные ребра, поэтому ребра имеют начальный узел и конечный узел (когда вы рисуете ребро: startnode -----> endode, я говорю не о том, чтобы нарисовать диаграмму классов, а о самом графе). Это то, что я делаю в своем ответе, где известны начальный и конечный узлы. Ненаправленное ребро соединяет два узла без различия между этими узлами (когда вы рисуете ребро: node1-----node2). Для меня вы не в теме, лучше удалите свой ответ. В любом случае хорошее продолжение - person bruno; 25.03.2021
comment
На исходной диаграмме граф иррефлексивен или антирефлексивен (это неверно). На вашей диаграмме граф нерефлексивен (это правильно). - person user6580165; 25.03.2021
comment
Я хотел сказать: ребро соединяет узлы одного графа (context Edge inv: from.directedGraph=to.directedGraph); ребро принадлежит тому же графу, узлы которого соединены (контекст Edge::directedGraph, производный: from.directedGraph) - person user6580165; 25.03.2021