我想知道UML是否有助于描述重度模板化的代码。我知道在UML(vector<T> <---- <<bind>> ---- vector<int>
)中存在参数化类的概念,但这不足以描述我们可以与模板一起使用的复杂的 duck-typed 关系。我总是可以在这些类之间建立关联,但在我看来,它实际上并没有帮助理解它是如何工作的。
此外,考虑到例如STL库,算法通常被实现为函数,因此不能很好地适应OOP模型,尽管它们仍然表现得非常类似于引入类之间关联的对象。
那么,绘制UML图来描述这样的模板化代码是否有意义?如果是这样,哪种图表最有用 - 在“标准”OOP中,我看到大多数时候都使用类图,但是对于模板化代码,其他一些图表会更有用吗?如果UML不适合那个,我还能用什么呢?
答案 0 :(得分:2)
我认为这取决于。
如果不同的实例化将导致显着不同的行为或关系,那么虽然可以使用UML进行建模,但这将是丑陋的。另一方面,如果行为对于不同的实例化实际上是不同的,那么我不确定模板是个好主意。
但是如果类之间的关系或多或少保持相同,无论它们如何被实例化,那么UML类图对于模拟这些关系就像对非参数化类一样有用。