以下内容是基于《开源网络模拟器ns-3 架构与实践》的学习笔记
NS3重要成分 类的介绍
NS3主要语言之一是C++,而C++是面向对象编程的程序语言,类的重要性不言而喻。
网络元素:是指网络节点、应用程序、通信信道、网络设备、节点中的协议栈、分组等。
每个网络元素对应一个C++基类:
- 节点 ---->Node
- 应用程序 ---->Application
- 通信信道 ---->Channel
- 网络设备---->NetDevice
- ..........
以上基类定义了对应网络元素的基本行为,或者说是共性。具体的网络元素会重写父类,用子类实现具体的功能。
为了实现类的管理,对象模型方法定义三个基类:SimpleRefCount、ObjectBase、Object。
几乎所有网络元素的C++类都是以上三个基类的子类。
三大基类的作用
SimpleRefCount类通过定义一个引用计算器记录指向自己内存的指针数量,来解决单个类的动态内存管理问题。当计数器为0时,表示该内存无人使用,该内存就会被自动释放。
ObjectBase类实现了单个类的另外一个重要功能需求:配置属性和trace变量。ObjectBase类定义了对以上变量进行配置的方法和存储数据结构。
Object类通过“对象聚合”功能解决多个类的动态关联问题。通过对象聚合,有关联的对象指针被统一管理在动态大小的指针数组中。
备注:
- Object类是SimpleRefCount类和ObjectBase类的子类
- 有不属于对象模型的C++类(即不是以上三大基类的子类):NodeContainer、所有的助手类、.......