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

В обсуждении моего ответа на этот question было высказано некоторое несогласие с тем, как моделировать этот код:

public class MainClass
{
    private Something something;

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

Ключевыми моментами являются:

  • класс Something - это атрибут в MainClass, предлагающий ассоциацию
  • класс Something ссылается на MainClass, указывая на зависимость
  • Предполагается, что зависимость является специализированной ассоциацией

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

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

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

Ответ 1

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

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

Ответ 2

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

Ответ 3

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