В 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]
- Агрегация - полый алмаз. [1]
- Состав - заполненный алмаз.
[1] Непонятно. Если есть один заполненный алмаз, все полые бриллианты указывают на слабое владение. Но если нет выделенного владельца, слабые и общие ссылки не могут быть различимы. Или слабое владение концептуально такое же, как отсутствие собственности?
Только Java вписывается в UML. Не повезло тебе. – rightfold
Хе-хе. ЛОЛ. Я думаю, вы не должны быть слишком сосредоточены на точных разъемах. Ассоциации будут делать в большинстве случаев, если у вас нет какой-либо умной генерации кода, которая нуждается в этой информации. –
Ну, в очень полиморфных и [динамических] (https://en.wikipedia.org/wiki/Composition_over_inheritance) сборках действительно нужно следить за памятью. Помните его C++, а не Java. Не знаю, что делать с RAII и безопасностью исключений. – ManuelSchneid3r