Означает ли ассоциация зависимость в UML?

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

public class MainClass
{
    private Something something;

    public void Action()
    {
        OtherClass other = something.GetOtherClass();
    }
}

Ключевые моменты:

  1. Something класс является атрибутом MainClass, предлагая ассоциацию
  2. Something класс ссылается в MainClass, предлагая зависимость
  3. Зависимость должна быть специализированной ассоциацией

Однако, поскольку зависимость может быть уместна в случаях, когда класс поставщика не является атрибутом, использование зависимости "скрывает" намерение, что Something это атрибут, а не просто ссылка?

Кроме того, подразумевает ли ассоциация, которая представляет атрибут в классе, зависимость, потому что она хранится (и предположительно ссылается и используется каким-либо образом).

Итак, со ссылкой на вышеупомянутые пункты, подразумевает ли ассоциация зависимость, и как бы вы смоделировали вышеуказанный код на диаграмме классов?

3 ответа

Решение

Зависимости и ассоциации - это две разные концепции. Согласно метамодели UML, оба являются двумя независимыми подклассами метакласса "Отношения".

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

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

Есть три класса, первый MainClassвторое Somethingи третий OtherClass, Это очень просто, если вы используете инструменты UML для генерации класса, вы увидите диаграммы. Это сочинение тебе класса. Я считаю, что пунктирная линия связана между MainClass а также OtherClass, Линия (ассоциация), соединенная между MainClass а также Something,

Другие вопросы по тегам