OMNet++ 中的 NED 语言学习(1)
posted in NED, OMNeT++
本文是对 OMNet++4.0 中的 NED 语言的学习笔记,其内容来自 OMNet++ 4.0 用户
手册的第三章第 1,2 节。
用户需要用 NED 语言来描述一个仿真模型。NED 代表 Network Description(网络描
述),它让用户声明简单模块(simple modules),从而连接或重组为复合模块
(compound modules),或将一些复合模块标记为 networks(网络)或自包含
(self-contained))的仿真模型。信道是另一个组件类型,它的实例也能使用在复
合模块中。
NED 的几个特性让它能在大型项目中也具有可伸缩性:
� 分层 复杂的模块作为一个实体,可以分解为更小的模块,从而组成复合
模块。
� 基于组件 简单模块和复合模块都是可重用的。
� 接口 接口可以在应该使用模块和信道的地方作为一个占位符
(placeholder)存在,而真正的模块或信道类型则可以在网络建立的时候通
过参数来决定。例如对于一个复合模型 MobileHost,它包含一个拥有
IMobility 模块接口的 mobility 子模型,那么类型可以从实现了
IMobility 接口的 RandomWalkMobility,TurtleMobility 中来选择。
� 包 采用了类似于 Java 的 package 机制来减少冲突,而 ned 引入的 NEDPATH
则类似于 Java 的 CLASSPATH,用于指定依赖关系。
� 内部类型 在复合模块中本地使用的信道类型和模块类型可以在复合模块内
部定义,这是为了减少命名空间带来的问题。
� 元数据注解 可以通过添加属性来为模块,信道类型,参数,gates 加以注
解。仿真核心并不直接使用元数据,但它们能携带为多种工具添加额外的
信息,运行时环境,甚至模型中的其它模块。例如,一个模块的图形化表
示(图标等)或者提示符及一个参数的测量的元(milliwatt 等)都通过元数
据注解来指定。
注意 继承,接口,包,内部类型,元数据注解都是在 4.0 之后才加入的新特性。
而且 NED 语言可以和 XML 进行相互转化而不会损失数据。
下面通过一个例子来学习 NED 语言。