从UML到代码没有一种通用的翻译方式,这是由于多种原因造成的,包括:- 使用何种UML元素以及使用方式。UML是一种庞大的语言。在历史上,它更加强调静态方面的内容(类、关联、包),而不是动态方面。只有相对较近的版本才具备可执行模型所需的操作语义。与更成熟的静态元素相比,这些新的部分还没有得到很好的支持。这可能是规范化的MDA转换没有变得更加普遍的一个重要原因。 - 可以针对不同的编程语言进行翻译。将UML翻译为第三代面向对象语言可能是最流行的选择。但也可以翻译为其他语言:C语言在嵌入式领域中很受欢迎。 - 不同的翻译规则可能取决于特定环境的需求。尽管如此,还是有一些常见的惯用法。例如:- UML包、类和属性通常直接映射到它们的OO 3GL对应项。实际上,许多UML模型只是3GL OO代码的图形表现形式。 - UML关系通常分为两个部分,在每个关系端存储指针/引用。 - 有3种常见的模型用于翻译UML状态模型(或更一般的任何状态模型):嵌套开关、状态表和状态模式。操作语言对于规范化映射来说还太新/支持不足。尽管如此,其规范与典型的3GL结构非常相似:if/then/else控制语句、赋值等。因此,模型和目标之间的语义差距相当小,翻译应该是相当直接的。希望对你有所帮助。