2015-09-25 3 views
0

В C++ типы значений неявного является самой сильной ассоциацией, но я могу представить себе followoing пяти отношений между классами, когда указатели/ссылки используется (командовали силой агрегатный):C++ конкретных UML моделирования указателей/ссылок

information level  +------+------+------+------+ 
v   ownership>| none | weak |shared|unique| 
+----------------------+------+------+------+------+ 
|knows/includes/uses | 2 | 3 | 4 | 5 | 
+----------------------+------+------+------+------+ 
|passes/forward declare| 1 | -- | -- | -- | 
+----------------------+------+------+------+------+ 

Некоторые из них могут не соответствовать намерению UML (например, 1). Но имхо было бы желать увидеть меру сочетания моего дизайна. Как эти пять типов ассоциаций вписываются в диаграмму классов. Какова общая практика обозначения этих ассоциаций?

Это то, что я думаю, что до сих пор:

  1. ??
  2. Направленная ассоциация - стрелка.
  3. Агрегация - полый алмаз. [1]
  4. Агрегация - полый алмаз. [1]
  5. Состав - заполненный алмаз.

[1] Непонятно. Если есть один заполненный алмаз, все полые бриллианты указывают на слабое владение. Но если нет выделенного владельца, слабые и общие ссылки не могут быть различимы. Или слабое владение концептуально такое же, как отсутствие собственности?

+1

Только Java вписывается в UML. Не повезло тебе. – rightfold

+0

Хе-хе. ЛОЛ. Я думаю, вы не должны быть слишком сосредоточены на точных разъемах. Ассоциации будут делать в большинстве случаев, если у вас нет какой-либо умной генерации кода, которая нуждается в этой информации. –

+0

Ну, в очень полиморфных и [динамических] (https://en.wikipedia.org/wiki/Composition_over_inheritance) сборках действительно нужно следить за памятью. Помните его C++, а не Java. Не знаю, что делать с RAII и безопасностью исключений. – ManuelSchneid3r

ответ

0

UML специально не предлагает языковые концепции. Используя UML, вы должны моделировать свою систему для заданного проблемного домена. Специфика языка предоставляется лицу, реализующему модель.

0

В UML нет строгих правил о том, как интерпретировать семантические различия между различными типами отношений, и особенно не о том, как переводить конструкции на определенном языке программирования на UML.

Но в отрасли есть несколько лучших практик. Я документировал некоторые из этих лучших практик на своем веб-сайте.

В вашем случае я бы также рассмотреть вопрос об использовании Завис. Вероятно, это самое слабое звено в UML. Я часто использую это, когда хочу визуально подчеркнуть использование типа в одном из параметров или атрибутов.

Смежные вопросы