#java #dependencies #uml #associations
#java #зависимости #uml #ассоциации
Вопрос:
Мой вопрос в том, можем ли мы иметь между 2 классами одновременно отношение ассоциации и зависимости. Я полагаю, что если у нас есть связь между 2 классами, зависимость уже включена. Например:
abstract class CarDealer {
protected String name;
protected int soldCars;
public Car (String name) {...}
public abstract int getSoldCars(){...}
public void sellCar(){...}
}
public class SimpleCarDealer extends CarDealer{
private CarDealer bestColleague;
public SimpleCarDealer(String name){...}
public int getSoldCars(){...}
public void serBestColleadue(CarDealer cd){...}
}
Комментарии:
1. У вас может быть более одной связи между одной и той же парой классов. Если вы это сделаете, то они могут быть разных типов.
2. «Я полагаю, что если у нас есть связь между 2 классами, зависимость уже включена». да, зависимость неявная. В любом случае вы также можете иметь зависимость, если это необходимо, это не запрещено
3. Похоже, что в этом случае у вас есть как обобщение (
extends Cardealer
), так и ассоциация (private CarDealer bestColleague;
)
Ответ №1:
Ассоциация — это более сильная форма зависимости. Итак, как только у вас есть ассоциация (то есть, по крайней мере, один класс может «видеть» другой через свойство), у вас уже есть зависимость. Зависимость иногда используется на ранней стадии проектирования, а позже заменяется ассоциацией. В этом случае вы удаляете зависимость. (Конечно, когда есть ассоциация, у вас, очевидно, есть зависимость, не так ли?) Вы покажете только зависимость, если свойства нет, а один класс использует другой, например, в качестве параметра в операциях.
Ответ №2:
Рассматривая семантику UML, вы не можете пропустить зависимость в целом. Потому что, по определению, «спецификация или реализация» зависимого элемента зависит от специфики или внедрения независимого элемента. В отличие от этого, ассоциация — это отношение между экземплярами этих связанных типов. Одним из следствий является то, что при объединении спецификации обоих классов по-прежнему независимы.