Означает ли ассоциация зависимость в UML?
При обсуждении моего ответа на этот вопрос возникли разногласия по поводу того, как смоделировать этот код:
public class MainClass
{
private Something something;
public void Action()
{
OtherClass other = something.GetOtherClass();
}
}
Ключевые моменты:
-
Something
класс является атрибутомMainClass
, предлагая ассоциацию -
Something
класс ссылается вMainClass
, предлагая зависимость - Зависимость должна быть специализированной ассоциацией
Однако, поскольку зависимость может быть уместна в случаях, когда класс поставщика не является атрибутом, использование зависимости "скрывает" намерение, что Something
это атрибут, а не просто ссылка?
Кроме того, подразумевает ли ассоциация, которая представляет атрибут в классе, зависимость, потому что она хранится (и предположительно ссылается и используется каким-либо образом).
Итак, со ссылкой на вышеупомянутые пункты, подразумевает ли ассоциация зависимость, и как бы вы смоделировали вышеуказанный код на диаграмме классов?
3 ответа
Зависимости и ассоциации - это две разные концепции. Согласно метамодели UML, оба являются двумя независимыми подклассами метакласса "Отношения".
Однако это правда, что в вашем сценарии я бы просто смоделировал связь между двумя классами, а не зависимость. Тот факт, что два класса связаны через ассоциацию, уже делает их зависимыми.
Я бы сказал, что это действительно зависит от того, что вы пытаетесь показать на конкретной диаграмме. Вы можете смоделировать это с любым. Вы даже можете использовать композицию, если она имеет смысл в контексте.
Есть три класса, первый MainClass
второе Something
и третий OtherClass
, Это очень просто, если вы используете инструменты UML для генерации класса, вы увидите диаграммы. Это сочинение тебе класса. Я считаю, что пунктирная линия связана между MainClass
а также OtherClass
, Линия (ассоциация), соединенная между MainClass
а также Something
,