Nebula Object System

总结了一下Nebula Object System.

1、Feathers:
    Note:以下提到的对象类型,都是指从nObject派生出来的类型
I.  Refrence Counted
    Nebula对象nObject从nReferenced继承,因此自身具有引用计数的能力,配合nRef以及nAutoRef可以很方便很安全的使用系统中的所有对象。
II. RTTI(Run-Time-Type-Infomation):
    RTTI使得可以在运行时获得某种类型的信息(nClass),包括类型的名称,实例大小,方法等等,也通过类型的名称直接创建对象。
III.NOH(Named Object Hierarchy)
    在系统中,Nebula对象以树的形式组织起来,有点类似于一个文件系统。可以通过对象的路径来获取对象,当然在创建一个对象时候也需要指明它的路径。
IV. Scripting
    Nebula对象类型分为NebulaClass(没有脚本接口)和NebulaScriptClass(有脚本接口),对于NebulaScriptedClass,需要为它们单独编写脚本接口,这些接口将可以在脚本中调用。编写接口时不需要考虑实际使用的脚本语言。
V.  Object Persistence
    当对象要保存到磁盘上的时候,它会以脚本的形式保存,当下次需要装载这个对象的时候就是执行这个脚本。对象的拷贝也是通过这种类似的方式。

2、Module Summary
    General:提供以上这些特性的部分在Nebula2中称为Kernel,包括nKernelServer以及一系列核心模块。

    Core Module:
    Module Name:  nReferenced
    Module Usage: 提供引用计数
    Module Explanation:
        引用计数功能:当试图引用一个对象的时候,该对象的引用计数自增,当不在使用该对象的时候引用计数自减,当引用计数为0的时候,对象将自动释放。Nebula的基本对象nObject从nReference继承,因此所有的Nebula对象都具备引用计数的功能。使用引用第一可以自动的管理对象,第二可以保证使用的对象是有效的。
    ———–
    Module Name:  nObject
    Module Usage: 具备RTTI的基本对象
    Module Explanation:
 从nObject派生的对象具备RTTI特性,包含了一个描述该类型的nClass。
    ———–
    Module Name:  nClass
    Module Usage: 描述类型的一种类型
    Module Explanation:
 RTTI的关键模块,具备RTTI的每种类型都有一个nClass与之对应,通过这个nClass,用户可以在运行时获得类型的名称、大小(InstanceSize)、脚本接口(nCmdProto)等等信息,并且可以创建该类型的实例。
    ———–
    Module Name:  nCmdProto
    Module Usage: 描述脚本接口原型的一种类型
    Module Explanation: 
 nCmdProto对象保存了它所描述的nCmd的输入和输出的原型(字符串描述,详见ncmdproto.h),以及其实际调用的C接口的地址。脚本系统通过nCmdProto实现脚本和系统的通信。
    ———–
    Module Name:  nCmd
    Module Usage: 表示某一次脚本接口调用
    Module Explanation: 
 通过脚本调用某个对象的方法时,会构造一个nCmd来保存所以输入和输出。脚本系统通常从脚本解析中获得某个对象的一个方法调用,然后获得对象类型nClass,检索调用的方法的原型nCmdProto,创建一个该方法调用的nCmd,填充输入,最后执行该方法,处理输出。nCmd和nCmdProto的关系就是数据和行为的关系。
    ———–
    Module Name:  nRoot
    Module Usage: Nebula系统中的基本对象
    Module Explanation:
 从nRoot派生的对象具备NOH特性,被称为Nebula Object
    ———–
    Module Name:  nKernelServer
    Module Usage: 管理RTTI以及Hierarchical Object
    Module Explanation:
 nKernelServer维护了nClass,用户可以通过nKernelServer创建指定类型的对象。RTTI机制就是通过预编译系统和nKernelServer实现的。

此条目发表在Project分类目录。将固定链接加入收藏夹。

2 Responses to Nebula Object System

  1. こと电车男说道:

    回来拉。呵呵,你的主页打开好卡哦,留言也卡。

  2. 佳森说道:

    是有点卡,我也不知道为什么~~~~很是奇怪

留下评论