Влияет ли ассоциация на зависимость в 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
.