使用UML表示在C++模板类中定义的typedef
Represent a typedef defined in a C++ template class using UML
我有一个表示UI小部件的模板类。这个类被称为(令人惊讶的)Widget
。该类定义graphics_type
(通过typedef
或类似物),其可以是cairo_t
、HDC
、CDC*
或类似物。换句话说,Widget
定义了一个名为graphics_type
的类型,用于绘制素材。
如何使用UML表示Widget
和graphics_type
之间的关系?
额外的问题:这里有C++程序员发现UML在这些情况下有用吗?
Sparx EA通过泛化将typedef链接到别名类型。至少当您从源代码导入时会发生这种情况。如果构造型是<<typedef>>
,则C++生成模板将覆盖Class。如果typedef使用模板,EA插入:
typedef templateName<alias> alias;
否则,它会插入:
typedef aliasedClass alias;
我去搜索是因为我想要:
typedef aliasedClass* class_ptr;
我不知道如何在UML中表达指针部分。我希望能找到一些标准的表达方式,但没有运气。
选项1:创建一个只是指针生成器的模板:模板类_ptr{/*TMTFWIW*/}
选项2:在PIM到C++PSM转换中使用标记插入*
。
我想我会选择#2。
publib.boulder.ibm.com有大量关于许多主题的文档,包括相当多关于UML的文档。他们对许多C++特定构造的规则,包括typedef和其他构造,几乎就像@David Rodriguez所说的那样。
对于UML的有用性问题,每个都有自己的答案。也许UML适用于非常大的项目,但我在这里没有什么要说的。在我的实践中,我发现基于UML图开发代码是无效的,因为C++中的类声明信息量很大,而且本身很清晰,尤其是当您在类体之外定义方法时。制作传统图表需要同样的时间,但并没有显示出什么新的东西。
类关系图的第二点是,如果从现有代码中自动构建,它们会非常好。例如,Doxygen可以做到这一点。好处是您不需要为UML花费额外的时间,并且可以轻松地检查当前的实现。此外,在带有这样的а图的打印纸上手工进行更改对于重构来说非常方便。
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 如何重新定义MPI_FLOAT,MPI_DOUBLE以 typedef 的方式
- 使用LASlib时BOOL typedef重新定义
- "typedef"类型名称是否可以像"struct"定义那样声明指向结构的指针?
- 具有未声明/未定义类型的 typedef 结构
- typedef 应该同时在类定义和类声明中吗?
- 定义 ostream 运算符<<用于类中定义的 typedef
- 模板化类,包含由 typedef 定义的类对象的向量.如何称呼它们
- C 通过Typedef定义新类型
- Typedef已定义的功能
- typedef 中的自定义类型为 Qt MetaType
- 错误:使用不同类型的 Typedef 重定义
- 带有STD ::向量的模板Typedef具有自定义分配器
- 在Visual Studio中定义与Typedef枚举发生冲突的原因是什么?
- 如何比较/排序包含自定义 typedef 的列表容器的元素
- 如何为联合成员定义typedef
- 为函数定义 typedef,该函数返回指向类似自身的函数的函数指针
- 在本地范围内重新定义typedef
- 定义Typedef?(UDP数据包)
- 使用基类并从中重新定义typedef