RGen_Ruby建模和代码生成的框架.docVIP

  • 24
  • 0
  • 约 25页
  • 2016-05-27 发布于安徽
  • 举报
RGen:Ruby建模和代架 简介 本文介“Ruby方式”RGen框架[1]。从MDA和MDD[2](但是除“建模”DSL)。模型。 RGen受到了openArchitectureWare(oAW)[3]这个有着相似应用范围的Java框架的影响。RGen的核心思想不Ruby在框架内作RGen通DSLs,Ruby十分适合在在一个著名的案例即是 Ruby on Rails[4],它包含了一些内置的Ruby DSLs。但是,oAW使用了一些外部的DSLs来定 经验告诉我们RGen方法是非常的使用Ruby和RGen我 使用RGen和oAWXML或者一“C++代UML状”作RGen来ECU) 模型和元模型 建模框架最重要的基本方面是表示模型和元模型的能力。元模型描述了特殊目的的模型看起来会是什 RGen在Ruby中采用了一Ruby表示法如1所示。 RGen通DSL一也就是所-元模型。 1:模型,元模型以及其Ruby表示 不像元模型,元-元模型在RGen里面已ECore -- Eclipse建模框架(EMF)[5]的元-元模型。2是ECore元模型的一个ECore中,元模型基本由一些以 图2:ECore元模型的 和其他例如oAW的框架相反,RGen的元模型定Ruby形式,一DSL。列表1描述了Ruby关键词来定义一个模块1和一些。Ruby类和模块中分辨出这些元素,需要一些额外的代码:模块加上了一些特殊的RGen模1),而且RGen元模型的基MMBase(2)。 元模型Ruby类继承来表示(3)。注意到Ruby原始不支持多重RGen命令可以支持MMMultiple(,,……)的返回 # 表1:元模型的状 module StatemachineMetamodel extend RGen::MetamodelBuilder::ModuleExtension # (1) class ModelElement RGen::MetamodelBuilder::MMBase # (2) has_attr name, String end class Statemachine ModelElement; end # (3) class State ModelElement; end class SimpleState State; end class CompositeState State; end class Transition ModelElement has_attr trigger, String # (4) has_attr action, String end Statemachine.contains_one_uni topState, State # (5) Statemachine.contains_many_uni transitions, Transition CompositeState.contains_many subStates, State, container CompositeState.has_one initState, State State.one_to_many outgoingTransitions, Transition, sourceState State.one_to_many incomingTransitions, Transition, targetState end 元模型的属性和引用由MMBase提供的特殊的类方法指定。因为Ruby类的定义是在相关代码执行的时候才被解释。在一个类的定义域内,当前对象是这个类的一个对象,所以这个类对象的方法能够被直接调用2. has_attr方法用来定Ruby数据3(4)。RGen在内部将RubyECore的原生EString。 contains_one_uni和contains_many_uni定one_to_one,one_to_many和 many_to_many5)中源的角色。注意,目RGen元模型中的引用都是在 当模型Ruby类会被初始化。属性值和引用目标都保存在相关对象的实例变量中。由于Ruby不允Ruby的getter方法的名字和相setter方法也是一setter方法能 上述的Ruby的4。在一getter方法会返回一个数setter方法也用数 表2Ruby类初始化机制(1)能4)。注意包的名字需要避免重3)。状s1的名字属性可以被getter方法的2)。一个s1(to-many)中,然后自to-one)

文档评论(0)

1亿VIP精品文档

相关文档