Диаграмма UML для аргумента метода

Допустим, у меня есть следующий код:

class A {
public:
    void doSomething(B* b);
}

class B {
}

Как бы я описал это на диаграмме UML? Моя первая мысль состоит в том, что A использует B, поэтому должна быть пунктирная линия от A до B. Но в некоторых школьных работах (это очень маленькая часть отчета о школьном задании) они, кажется, используют символ агрегации (пустой ромб и сплошная линия).

Мне это кажется неправильным - если A действительно содержит указатель на B в качестве члена, это кажется правильным. Но когда только некоторые методы используют указатель на B и не сохраняют его ни в каких переменных-членах, это кажется неправильным.

Что здесь?

(Я мог бы спросить своих учителей, но они обычно очень долго отвечают на вопросы такого типа... и, честно говоря, я больше доверяю коллективному мозговому доверию Stackoverflow :))


person Magnus W    schedule 04.03.2016    source источник


Ответы (2)


Вы должны использовать простую зависимость между A и B:

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

A просто использует B в качестве параметра в операции. Если у вас есть атрибут типа B, вы должны использовать ассоциацию. Агрегация дает лишь небольшую дополнительную семантику, и вы можете (/должны) опустить ее, если не знаете, что хотите передать какую-то конкретную информацию.

person qwerty_so    schedule 04.03.2016

Между class A и class B НЕ должно быть стрелки. Стрелки между классами используются для обозначения «ассоциаций».

Ассоциация указывает, что разрабатываемая вами система хранит какие-то связи между экземплярами связанных типов.

Источник: Свойства ассоциаций на диаграммах классов UML

Чтобы зафиксировать/представить void doSomething(B* b);, вы можете попробовать использовать диаграмму активности, для получения дополнительной информации см. эту ссылку.

person vcp    schedule 04.03.2016