【问题标题】:How can we express Concept in UML diagram?我们如何在 UML 图中表达概念?
【发布时间】:2014-06-24 04:21:21
【问题描述】:

UML 类图是否支持表达概念?
另外,还有其他表达概念的图吗?
为避免误解,我指的是 C++ 和泛型编程中的“概念”。

【问题讨论】:

  • 我不是 100% 确定你可以在 UML 中完全实现它,但你可能应该从 UML 中的 parametrised class(“模板”类)开始,看看它是否可以以某种方式提供帮助。此外,您肯定需要stereotypes 和可能的tagged values 来完善您的定义。概念在语法上看起来像刻板印象的模板类。
  • 看来值得一试。谢谢。
  • 您的问题很有趣(+1 表示新意),但下次尝试至少第一次搜索答案。
  • @Aleks Concepts 提出了通用规则,适用于受某种模式约束的任何元素。 UML 中没有用于表达这一点的工具。通过您提出的工具,只能说概念的存在,但不能将其与主题元素联系起来。
  • @Gangnus,不幸的是我对这些概念了解得不够多,所以我无法讨论它。 :( 我只知道 UML 非常灵活,它的语义可以调整很多。例如,C 不是 OO,您可以使用原型类对 C 文件进行建模,例如它的方法、变量、依赖关系.. . 我做了很多次类似的操作,甚至为非 IT 概念建模。

标签: c++ uml c++-concepts


【解决方案1】:

基本上可以通过“基类”问题的答案来回答这个问题: “UML 是否会尝试使其与 C++ 1 对 1 匹配?”

答案是“不”。

这是一个很常见的误解,人们可能会在 UML 或任何其他 C++ 特定的东西中寻找表达指针的可能性。你会很不幸地找不到它。

历史上的误解来自一些 UML 建模工具附带的 C++ 代码生成引擎的可用性。所有这些代码生成引擎都有自己的编码模式来解决从模型到代码的转换。仅仅是因为过渡模式本身没有标准。

UML 来自 OMG,OMG 有 (Corba)IDL-to-C++ 的生成模式文档,但没有 UML-to-C++ 的生成模式文档。

【讨论】:

    【解决方案2】:

    在阅读了Wikipedia explanation of C++ "concepts" 之后,它在我看来就像与generic classes and type constraints in C# 目标相同的工具

    如果我理解正确,那么按照较早的 Stack Overflow 问题 Representing a C# Generic Method in a UML Class Diagram,您应该检查 @Aleks 已经建议的 http://www.uml-diagrams.org/template.html

    基本上,我的意思是像您通常那样为您的接口和类建模。只需使用模板注释,您还可以使用虚拟依赖关系绘制一些类型限制,模板中使用的形式参数之间的继承关联

    【讨论】:

    • 这似乎是迄今为止最接近的东西。我喜欢你对现有实践的参考。
    【解决方案3】:

    您可以在 UML 中显示概念使用的所有结构 - 即函数、算法、类等。 但不是概念本身,因为它是一种创建语法的元素。

    此外,您不能在 UML 宏、预处理器命令等中显示。

    所有这些东西根本不属于模型,而是属于语言/语法/句法。还有其他工具可以为他们提供支持。形式语法、理论等。是的,有图表。在 google 中查找“形式语法图”,您会看到一大堆。

    【讨论】:

    • 概念只是句法元素?为什么?我们不是用Concept建模多年吗?概念甚至还不是 C++ 的语法元素,尽管我们最近确实有它的实验性实现。
    • @NickyC 不,它不仅仅是一个句法元素。它创建语法。概念的使用是创建特定于您的应用程序的语法。
    • 概念创造语法?如何?仍然,Concept 为事物建模,对吗?我认为我们无法将预处理器指令与 Concept 进行比较。
    • @NickyC "... 概念表明,任何具有运算符
    • 这样说还是很奇怪的。概念并不是什么新鲜事物。当我们使用模板时,概念自然会出现。概念已经存在,即使没有编译器支持或语法支持。因此,标准库中的语法已经存在了几十年,即使没有“作为(提议的)C++ 语法的概念”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 2014-06-18
    • 2020-04-20
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    相关资源
    最近更新 更多