要查看变换如何工作,请考虑它解决的问题:假设您正在编写变换并且要使用 Package2Package 映射声明中的 Class2InterfaceRealization 映射声明来创建接口实现。但是,子图映射的目标功能部件(UML 类的接口实现)在 Package2Package 映射声明中不可见。如何映射至已缺失的目标功能部件?
要将接口实现作为目标提供,请在 Package2Package 映射声明中创建从 packageElement 功能部件到 packageElement 功能部件的子图(图上的项 1)。此子图递归地引用了它的父 Package2Package 映射声明并以这种方式提供对嵌套包及它们的内容的支持。因此,您现在可以定义从 packageElement 功能部件到 packageElement 功能部件的其他子图了。子图可以引用其他映射声明:Class2Class(项 2)和 Class2Interface(项 3)。
创建 Class2Class 映射声明时,可以使用将整个类元素作为其输入的子图(项 4)。对于输出,请选择 interfaceRealization。此操作的结果是使 Class2Interface 映射声明可用,通过使用该映射声明,您可以创建将整个类元素作为它们的输入并将供应端功能部件作为它们的输出的其他子图(项 5 和项 6)以及客户端功能部件。生成变换代码时,此处定义的子图将不创建输出对象,而创建对输出对象(由从其他映射声明生成的变换创建)的引用。
生成变换代码时,供应端功能部件和客户端功能部件都必须引用从输入 UML 对象生成的 UML 对象。要指定要引用的输出对象,请编写子图定义,以便定义标识映射声明(Class2Class 或 Class2Interface),这些映射声明的生成的变换负责从同一输入生成特定的输出对象(类或接口)。
有关详细信息,请检查样本变换配置。在图中,从子图指向映射声明顶部的箭头指示该子图引用该映射声明。例如,标签为“1”的箭头引用 Package2Package 映射声明。
