【问题标题】:Is there a way to specify a relationship whereby a class generates the code for another class? UML有没有办法指定一个类为另一个类生成代码的关系? UML
【发布时间】:2012-03-18 12:29:40
【问题描述】:

我正在编写一个为多个类生成代码的系统,我需要用 UML 图记录它。这些类将遵循相同的结构,但它们的名称由用户设置。有没有办法指定CCodeGenerator 为这些类生成代码?

另外,我目前在我的CDataDefinition 类(它定义了每个生成的类中应该包含的内容)和CCodeGenerator 之间有关系,有没有办法表示生成的类和生成器的数量正好等于CDataDefinition 实例的数量?

这些类将在另一个系统中使用,该系统也需要为其制作 UML 类图。有没有办法表明这个项目中的一个类 (CEditior) 使用了它们?

操作示例:

我有 3 个 CDataDefinition 对象,它们定义了 X、Y 和 Z 类。我的 CCodeGenerator 实例将从这些类中创建 3 个类(.cs 文件中的 C# 代码)。

CEditor 在单独的解决方案中将与这 3 个类进行交互。

【问题讨论】:

    标签: uml


    【解决方案1】:

    如果您阅读了MOF 上的一些介绍性信息,您会发现在UML 家族中,一层中的元类实例是下一层中的分类器。

    在您的情况下,代码生成器中描述其输出中的类的类将是元类 (CDataGenerator),输出中的类由元类的实例表示。

    在普通的 UML 中,除了“X 是 Y 类型”之外的关联无法在层之间交叉。

    您也许可以使用 MOV QVT(查询、查看、转换 - 即将一个模型映射到另一个模型的语言)对这种关系进行建模,但我不知道工具支持的当前状态,如果您有一个 QVT 工具,您可能不需要编写代码生成器。

    【讨论】:

      【解决方案2】:

      您需要构建一个模板类 (CDataDefinition) 来表示可以由 CCodeGenerator 创建的类的结构当您创建实际类时,您会执行绑定,因此您所要做的就是显示 CCodeGenerator 具有操作(比方说)classGenerator(name:String) 然后你可以证明这个方法创建了一个类作为对 CDataDefinition 的正确绑定。

      【讨论】:

        猜你喜欢
        • 2010-09-07
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-29
        相关资源
        最近更新 更多