Является ли UML полезным для описания шаблонного кода?

Я хотел бы знать, полезен ли UML для описания сильно-шаблонного кода. Я знаю, что в UML (vector<T> <---- <<bind>> ---- vector<int>) есть понятие параметризованных классов, но этого недостаточно, чтобы описать сложные отношения с утки, которые мы можем иметь с шаблонами. Я всегда могу устанавливать ассоциации между такими классами, но мне кажется, что это не поможет понять, как это работает.

Кроме того, рассматривая, например, библиотеку STL, алгоритмы часто реализуются как функции и, следовательно, не очень хорошо вписываются в модель ООП, хотя они по-прежнему ведут себя как объекты, представляющие ассоциации между классами.

Итак, имеет смысл рисовать диаграммы UML для описания такого шаблонного кода? Если да, то какие типы диаграмм были бы наиболее полезны - в "стандартном" ООП я видел диаграммы классов, которые использовались большую часть времени, но, вероятно, для шаблонов кода были бы более полезны некоторые другие виды диаграмм? Если UML не подходит для этого, что еще я могу использовать?

Ответ 1

Я думаю, это зависит.

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

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