После долгих поисков, чтения, внутреннего размышления и обсуждения, я считаю, что нашел удовлетворительный ответ на этот вопрос. Я немного прогуляю, но очень хочу это задокументировать!
A зависимость использования (<<use>>
) и не нормальная зависимость , это то, что я должен использовать, чтобы указать отношения между MainWindow
и GameManager
классы.
Первоначально, я не был уверен из-за (казалось бы) противоречивой информации в текстах, цитируемых в вопросе. (Это было довольно тревожно, так как оба текста были написаны Бухом, Рамбо и Якобсоном!).
Прочитав вопрос Тони, я начал думать, что только что ослеп к реальности, что я должен просто использовать зависимость. Затем я перешел по ссылке на исходный материал, предоставленный Тони , и несколько раз прочитав определение «Зависимость», стало ясно, что в данном случае эти отношения просто не подходят.
... изменения в одном элементе модели ... могут вызвать изменения в другом элементе модели ...
Помимо изменения имени класса GameManager
, его изменение не повлияет на MainWindow
.
(Этот источник интересен, потому что, по крайней мере, для меня это не просто ссылка на UML, поскольку это всего лишь страница справки для продукта IBM. Как оказалось, это не имеет значения, поскольку практически не отличается от из справочника.)
Просматривая этот список, в конце концов приходит к отношениям «Использование»
Отношение использования - это отношение зависимости, в котором один элемент модели требует наличия другого элемента модели (или набора элементов модели) для его полной реализации или работы.
Это намного лучшее описание ситуации, и было трудно не почувствовать, что это был путь. Я чувствовал, что конфликт между руководством пользователя и справочником становится все более и более неуместным.
Тогда я начал задаваться вопросом, потому что вспомнил кое-что любопытное в Visual Paradigm для UML; У него есть два инструмента для создания зависимостей использования:
(Можно выбрать инструмент Dependency
, а затем добавить стереотип <<use>>
.)
Почему этот странный человек может спросить? Что ж, теперь мне интересно, является ли зависимость использования на самом деле прямой специализацией отношения или отношения зависимости? Был ли это смысл совершенно отдельный от прямой зависимости? В любом случае, достаточно важно получить собственный инструмент в VP.
Дальнейшее изучение справочного руководства показало, что в зависимости от использования не было ничего особенного, кроме того факта, что она подчеркнута.
Я наконец решил проверить последнюю UML-спецификацию от OMG, чтобы попытаться положить все это на отдых. Последним доказательством, позволяющим поставить заключение без сомнения, были описание и семантика, указанные для двух отношений из разделов 7.3.12 и 7.3.54.
Зависимость:
Семантика
... изменение поставщика может повлиять на элементы модели клиента. Зависимость подразумевает, что семантика клиента (sic?) Не полна без поставщика.
Использование:
Описание
Использование - это отношение, в котором одному элементу требуется другой элемент (или набор элементов) для его полной реализации или работы. В метамодели использование - это зависимость, в которой клиент требует присутствия поставщика.
Семантика
Зависимость использования не определяет, как клиент использует поставщика, кроме факта, что поставщик используется в определении реализации клиента.
Каждое из этих утверждений согласуется с выводом о том, что использование является подходящей концепцией для ситуации, представленной в вопросе.
Наконец, подсказка о духе, в котором следует использовать зависимости использования, является следующим утверждением из справочного руководства (p64):
(в отношении необходимости использования отношений зависимости:
Часто это происходит из-за проблем реализации, таких как требования компилятора, что определение одного класса необходимо для компиляции другого класса.
Взяв все это вместе, можно сделать вывод, что зависимость использования является более слабой формой зависимости, чем прямая зависимость, но это несколько субъективно.
Уф!