CN101872358A - 用于计算机生成兵力仿真系统的数据池及其实现方法 - Google Patents
用于计算机生成兵力仿真系统的数据池及其实现方法 Download PDFInfo
- Publication number
- CN101872358A CN101872358A CN201010197089A CN201010197089A CN101872358A CN 101872358 A CN101872358 A CN 101872358A CN 201010197089 A CN201010197089 A CN 201010197089A CN 201010197089 A CN201010197089 A CN 201010197089A CN 101872358 A CN101872358 A CN 101872358A
- Authority
- CN
- China
- Prior art keywords
- data
- interface
- node
- simulation
- template
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提出用于计算机生成兵力仿真系统的数据池及其实现方法,用于管理仿真对象之间的数据交互。其中,数据池包括模板组、数据接口节点和节点管理对象,模板组提供模板对象对多种类型数据封装,数据接口节点对数据进一步封装,节点管理对象将索引名称与数据接口节点绑定。数据池实现方法主要通过创建模板对象、实现数据接口节点与节点管理对象,实现了对仿真对象的数据封装,仿真对象通过索引名称可向数据池查询数据。仿真对象最终通过指针操作获取数据,仿真对象之间无耦合关系,数据的访问效率比较高,为仿真系统的开发和集成提供了便利,并且本发明的数据池能够以模块化的方式逐步扩展新功能,实现了开放性的扩展能力。
Description
技术领域
本发明属于计算机仿真技术领域,具体涉及一种用于计算机生成兵力(Computer Generate Force,CGF)仿真系统的数据池及其实现方法。
背景技术
计算机生成兵力领域的应用通常是仿真虚拟战场环境。为了建立虚拟战场,需要通过软件和硬件方式创造多个能够自主决策、自主行动的虚拟作战对象,如飞机、坦克等。这些虚拟的作战对象称为仿真对象。在仿真运行过程中,仿真对象之间进行数据交互是一种常见的需求。
实现仿真对象数据交互的传统方法有两种,一种是直接访问方式,另一种是共享内存方式。第一种直接访问方式如图1所示,仿真对象A1上包含有仿真对象A2的接口模块,仿真对象A2上包含有仿真对象A1的接口模块,参与交互的仿真对象A1和仿真对象A2直接调用对方的接口模块,从而获得数据。这种方式的效率高,但获取数据的一方需要事先包含提供数据一方的接口模块。因此,这种方式会使仿真对象之间产生耦合关系,需要额外的集成调试工作才能协调工作,这不符合当前模块化的系统构建原则。
另一种共享内存方式通过公共内存实现数据交互,如图2所示,仿真系统首先定义一块足够大小的内存空间,并为每个仿真对象An进行分配。仿真对象把与外部共享的数据存放在自己的内存区,并负责更新,如图2中的空心箭头所示。若仿真对象A1将数据存放在自己的内存区,而仿真对象A2需要仿真对象A1的数据,则直接访问仿真对象A1的内存区查询所需数据然后存取,如图2中的实心箭头所示。这样,每个仿真对象都只跟共享内存交互,不存在仿真对象之间的耦合问题。但这种方式加入了数据的复制和拷贝操作,因此效率较低。另外,这种方式还需要额外开辟的内存空间,造成浪费。
模板是一种泛型编程技术。所谓泛型编程就是以独立于任何特定类型的方式编写代码,而实现这种方式的途径就是模板。模板是创建类或函数的蓝图或公式。例如,我们可以定义一个模板Array<Class T>,可以作为多种数据类型的存储数组,既可以是Array<int>,也可以是Array<double>。
模板类具有以下一般形式:
template<typename T1,typename T2…>class MyClass{
...
}
关键词template表示当前是一个模板类定义。关键字template后跟模板的形参列表。类型参数typename表示T1和T2都是某种类型。关键词class表明当前是一个类的定义。最后,类的名称为MyClass。模板还有其它形式,例如模板函数。以下是模板函数的典型定义方式:
template<typename T1,typename T2…>
returntype function(const T1 & value 1,const T2& value2…){
...
}
而函数指针是指向函数而非指向对象的指针。像其它指针一样,函数指针也指向某个特定的类型;这个类型与函数的返回值和形参表有关,而与函数名无关。例如,以下为函数指针的典型定义:
bool(*pf)(const string&,const string&);
通过以上方式,pf被定义为指向一类函数的指针:这类函数带有两个const string&参数,并返回布尔值。函数指针可以作为一般指针进行使用,等价于直接调用函数,效率高。
发明内容
本发明的目的是为了解决上述仿真对象数据交互的传统方法中需要额外的集成调试工作,或者访问数据效率较低等问题提出一种用于计算机生成兵力仿真系统的数据池及其实现方法,用于管理仿真对象之间的数据交互。
一种用于计算机生成兵力仿真系统的数据池,由模板组、数据接口节点和节点管理对象组成;
所述模板组包括4类模板对象,用于对不同的数据源进行封装;所述数据接口节点是在模板对象基础上对数据源的进一步封装;所述节点管理对象管理多个数据接口节点,并将索引名称与数据接口节点绑定;
仿真对象向节点管理对象传递索引名称,节点管理对象返回与该名称绑定的数据接口节点,该数据接口节点通过访问模板组中的模板对象获取数据,节点管理对象将获取的数据返回给仿真对象。
所述模板组包括的4类模板对象,具体是:COM组件模板对象,用于封装具有COM组件形式的数据源;内存模板对象,用于封装存在于内存中的数据源;仿真对象接口模板对象,用于封装具有仿真对象的数据接口形式的数据源;全局接口模板对象用于封装以全局接口形式存在的数据源。
所述数据接口节点提供数据的绑定接口、读写接口和事件监听器接口。绑定接口具有相同的接口形式,以模板对象为参数,实现数据源与索引名称的绑定。读写接口通过访问模板对象实现对数据源的读取和写入。事件监听器接口负责监听三类事件,包括:数据源的数据发生改变、数据接口节点自身被删除、数据接口节点自身被创建,当这些事件发生时,所有正在监听的数据接口节点都将得到通知。
所述的节点管理对象外部接口包括数据节点查询接口、绑定操作接口和数据访问接口。
数据节点查询接口接收仿真对象传递的索引名称,并返回对应的数据接口节点。绑定操作接口采用函数指针技术,将不同形式的数据源转换为的数据接口节点绑定在数据池中。数据访问接口包括数据读取接口和数据写入接口。数据读取接口的参数为索引名称,返回相应数据源的当前数值。数据写入接口的输入参数为索引名称和写入的数值,返回是否成功标志。
一种用于计算机生成兵力仿真系统的数据池的实现方法,具体包括以下步骤:
步骤一、构建模板组中的模板对象,将仿真对象的数据在模板组1中进行封装;
所述的模板对象实现对数据源的读、写以及数据自身复制的操作,构建有四类:COM组件模板对象用于封装以COM组件形式存在的仿真对象;内存模板对象用于封装内存中的独立变量数据源;仿真对象接口模板对象用于封装仿真对象的成员数据接口;全局接口模板对象,用于封装一类具有整型索引参数的对象成员接口;
步骤二、实现数据接口节点,将步骤一中经过模板对象封装后的数据进一步封装;
所述数据节点对象实现绑定接口、读写接口以及事件监听接口;绑定接口具有相同的接口形式,以模板对象为参数,实现数据源与索引名称的绑定;读写接口通过访问模板对象来实现对数据源的读出或写入操作;事件监听器接口以回调的方式工作,响应三类事件:数据接口节点自身绑定的数据发生改变、数据接口节点自身被删除以及数据接口节点自身被创建,当一个数据接口节点发生这些事件时,所有正在监听的其它数据接口节点都将得到通知;
步骤三、实现节点管理对象,使能够对每个数据接口节点通过唯一索引名称进行索引;
所述节点管理对象实现数据节点查询接口、绑定操作接口以及数据访问接口;数据节点查询接口接收输入的索引名称,并返回与之关联的数据接口节点;绑定操作接口采用函数指针技术将各数据接口节点绑定在数据池;数据访问接口包括数据读取接口和数据写入接口,数据读取接口的参数为索引名称,返回与索引名称对应的当前数值,数据写入接口的输入参数为索引名称和写入的数值,返回是否成功标志;
步骤四、仿真对象通过数据池,实现对数据的访问。
本发明的优点在于:
(1)每个仿真对象都通过索引名称向数据池查询数据,仿真对象之间没有耦合关系。这使仿真系统的开发和集成提供了极大的便利;
(2)数据的访问效率高。仿真对象获取数据的过程最终是通过指针(变量指针或函数指针)操作实现的,这与仿真对象之间直接调用的效率相当;
(3)实现了开放性的扩展能力。对于使用数据池进行交互的仿真系统,用户可以很容易地加入新的功能模块,从而实现对已有功能的扩展。例如,加入未来可能出现的新类型的兵力仿真对象。
附图说明
图1是采用直接访问方式的仿真对象数据交互示意图;
图2是采用数据共享内存访问方式的仿真对象数据交互示意图;
图3是本发明的数据池的整体结构示意图;
图4是本发明的数据池中模板组所包含的模板对象的示意图;
图5是本发明的数据池中数据接口节点的结构示意图;
图6是本发明的数据池中节点管理对象的“树”结构的示意图;
图7是仿真对象数据采用本发明的数据池进行数据交换的示意图;
图8是本发明的数据池的实现方法的步骤流程图;
图9是本发明实施例中仿真对象进行数据交互的方式示意图。
图中:
1-模板组 2-数据接口节点 3-节点管理对象 201-绑定节口
202-读写接口 203-事件监听器接口 301-数据节点查询接口 302-绑定操作接口
303-数据访问接口
具体实施方式
下面将结合附图和实施例对本发明作进一步的详细说明。
本发明提出的一种用于计算机生成兵力仿真系统的数据池,如图3所示,包括模板组1、数据接口节点2和节点管理对象3;其中,数据接口节点2可以有多个。
模板组1包括多种模板对象,用于实现数据池对不同类型数据源的管理。数据源是指向外提供数据的对象,有多种形式,可以是内存中某个独立变量,也可以是组件模块的数据访问函数。数据接口节点2是在模板对象基础上对数据源的进一步封装,通过绑定接口201、读写接口202以及事件监听接口203,实现了对数据源的统一操作。节点管理对象3管理多个数据接口节点2,实现了将索引名称与数据接口节点2绑定的功能。当仿真对象(即数据池的用户)需要数据时,首先向节点管理对象3传递索引名称;节点管理对象3获得与名称绑定的数据接口节点2,并获取数据。最后,节点管理对象3将数据返回仿真对象。
所述的模板组1包括4类模板对象,如图4所示。其中,COM组件模板对象封装了以COM组件形式存在的数据源,内存模板对象封装了内存数据形式的数据源,仿真对象接口模板对象封装了以接口形式存在的数据源,全局接口模板对象封装了以全局接口形式存在的数据源。模板对象封装这些不同类型的数据源,均实现了对数据源的“读”、“写”以及“克隆自身”操作,向外部屏蔽了数据源访问形式上的区别。模板组1将数据源经模板对象封装后传送给数据接口节点2进行进一步的封装。
所述的数据接口节点2在模板组1传过的数据基础上进一步对该数据进行封装,向节点管理对象3屏蔽4类模板对象之间的差异性;节点管理对象3管理多个数据接口节点2。如图3所示,数据接口节点2主要提供了两类接口:对数据的绑定接口201和读写接口202,此外还提供了事件监听器接口203。
如图5所示,数据接口节点2的绑定接口201实现数据源与索引名称的绑定,实际通过模板组1的绑定接口实现具体操作。绑定接口201实现了对布尔型(boolean)、整型(int)、短整型(short)、长整型(long)、单精度浮点数(float)、双精度浮点数(double)、字符串(string)以及COM组件类型的数据源绑定能力。
数据接口节点2的读写接口202实现对数据的操作能力,包括读取和写入两种操作,如图5所示,读写接口202通过访问模板对象来实现对数据源的读取或写入操作。
数据接口节点2还实现了事件监听器接口203。事件监听器接口203响应三类事件:1)自身绑定的数据发生改变;2)自身被删除;3)自身被创建了。如图5所示,对一个特定的数据接口节点2而言,当发生这些事件时,所有正在监听的其它数据接口节点2都将得到通知,这种特性使节点管理对象3能方便地监控数据接口节点2。
所述的节点管理对象3通过“树”结构管理多个数据接口节点2,对每个数据接口节点2通过唯一的名称即索引名称进行索引,如图6所示。其中,“根节点”是一个虚拟的顶层节点,表示节点管理对象3自身。“根节点”下面可以有多个对象,如图6所示,为两个仿真对象所建立的节点管理对象3,其“根节点”下面包括“对象一”和“对象二”。每个对象表示多个数据接口节点2的集合。在“树”结构中,叶结点就是各个数据接口节点2。每个叶节点都绑定了特定形式的数据源。叶节点的索引名称有特定的构造方式,与文件系统的“路径”类似,中间通过符号“/”分开。例如,图6中由虚线标出的叶结点“数据B”,索引名称为“根节点/对象一/数据B”。用户通过索引名称查询节点管理对象3,获得相应的数据接口节点2。
如图3所示,节点管理对象3的外部接口包括:数据节点查询接口301、绑定操作接口302和数据访问接口303。
所述的数据节点查询接口301接收输入的索引名称,并返回与之关联的数据接口节点2。
所述的绑定操作接口302,用于将不同形式的数据源转换为的数据接口节点2绑定在数据池中。在本发明中,索引名称与数据接口节点2的绑定采用函数指针技术。对于独立变量形式的数据源,绑定时需要指定的索引名称和独立变量的指针。对于以仿真对象数据接口形式存在的数据源,绑定时需要指定索引名称和仿真对象数据接口。
所述的数据访问接口303包括数据读取接口和数据写入接口。数据读取接口的参数为索引名称,返回与索引名称对应的当前数值。数据写入接口的输入参数为索引名称和写入的数值,返回是否成功标志。
本发明的数据池的工作过程,如图7所示,假设有An个仿真对象使用本发明的数据池进行数据交换,在图中标记为仿真对象A1、仿真对象A2…仿真对象An。首先,在初始化时刻,各仿真对象将自身向外部提供的数据源与数据池进行绑定,如图中①所示。其次,在运行时刻,仿真对象可通过索引名称向数据池查询指定的数据源,如图中②所示。索引名称可以指向任何仿真对象。最后,数据池返回查询结果给仿真对象,如图中③所示。从工作过程可知,数据池作为一个集中的数据交换区域,解除了仿真对象之间的耦合关系,使得仿真对象不需要了解彼此的定义就能实现数据交互。
本发明一种用于计算机生成兵力仿真系统的数据池的实现方法,如图8所示,具体包括如下步骤:
步骤一、构建模块组1中的模板对象,将仿真对象的数据在模板组1中进行封装。
各模板对象封装不同类型的数据源,实现对数据源的读、写以及数据自身复制的操作。在模块组1中构建4类模块对象:COM组件模板对象用于封装以COM组件形式存在的仿真对象;内存模板模板用于封装内存中的独立变量数据源;仿真对象接口模板对象用于封装仿真对象的成员数据接口;全局接口模板对象,用于封装一类具有整型索引参数的对象成员接口。
步骤二、实现各数据接口节点2,将步骤一中经过模板对象封装后的数据进一步封装。实现数据接口节点2通过实现绑定接口201、读写接口202以及事件监听接口203来实现。
绑定接口201实现数据源与索引名称的绑定,绑定接口201具有相同的接口形式,以模板对象为参数,实际通过模板组1的绑定接口实现具体操作。绑定接口201实现了对布尔型(boolean)、整型(int)、短整型(short)、长整型(long)、单精度浮点数(float)、双精度浮点数(double)、字符串(string)以及COM组件类型的数据源绑定能力。
读写接口202通过访问模板对象来实现对数据源的读出或写入操作。数据接口节点2在内部将输入的模板对象进行克隆,以获得对数据源的访问能力。
事件监听器接口203以回调的方式工作,触发事件的一方调用,处于监听的一方接收。事件监听器接口203响应三类事件:1)数据接口节点2自身绑定的数据发生改变;2)数据接口节点2自身被删除;3)数据接口节点2自身被创建了,当本数据接口节点2发生这些事件时,所有正在监听的其它数据接口节点2都将得到通知。
步骤三、实现节点管理对象3,使能够对每个数据接口节点2通过唯一索引名称进行索引。具体实现节点管理对象3通过实现数据节点查询接口301、绑定操作接口302以及数据访问接口303来实现。
数据节点查询接口301接收输入的索引名称,并返回与之关联的数据接口节点2。
绑定操作接口302,用于将不同形式的数据源转换为的数据接口节点2绑定在数据池中。索引名称与数据接口节点2的绑定采用函数指针技术。对于独立变量形式的数据源,绑定时需要指定索引名称和独立变量的指针。对于以仿真对象数据接口形式存在的数据源,绑定时需要指定索引名称和仿真对象数据接口。
数据访问接口303包括数据读取接口和数据写入接口。数据读取接口的参数为索引名称,返回与索引名称对应的当前数值。数据写入接口的输入参数为索引名称和写入的数值,返回是否成功标志。
节点管理对象3通过“树”结构管理多个数据接口节点2,其中,“树”结构的“根节点”是一个虚拟的顶层节点,表示节点管理对象3自身,“根节点”下面有若干对象,每个对象是多个数据接口节点2的集合,各对象的下面就是各叶结点,各叶结点就是各个数据接口节点2。每个叶节点都绑定了特定形式的数据源。叶节点的索引名称有特定的构造方式,与文件系统的“路径”类似,中间通过符号“/”分开。
步骤四、仿真对象实现对数据的访问。具体在访问数据时可以通过下述两种方式实现。
第一种方式如图9中的实线箭头所示:仿真对象通过索引名称从节点管理对象3获得相应的数据接口节点2,再通过该数据接口节点2的读写接口访问数据,数据通过节点管理对象3的访问接口返回给仿真对象。
第二种如图9中的点划线箭头所示:仿真对象通过节点管理对象3访问数据源,节点管理对象3将数据直接返回给仿真对象,这种方式实际上,节点管理对象3在内部仍通过数据接口节点2操作数据源,只是把这个过程向外部的仿真对象隐藏了。
以第一种方式实现数据交互需要执行两个步骤,但效率高。因为除了第一次之外,其它时候访问数据将不需要再执行对字符串的解析、查询操作。采用第二种方式只需执行一个步骤,但每次都要进行对数据节点的查询,效率较低。因此,在仿真运行时刻推荐采用第一种方式。
实施例:建立一个仿真实验应用,包含数据池以及两个仿真对象,分别为雷达对象(Radar)和飞机对象(Fighter),仿真雷达对飞机的探测过程。在这个过程中,雷达需要飞机的当前位置数据,从而判断飞机是否应出现在雷达屏幕上。两个仿真对象通过数据池进行数据交互。
本实施例中建立的本发明的数据池具体如下。
在该仿真实验中,在模块组1针对不同类型的数据使用对应的模板对象进行封装,COM组件模板对象用于封装以COM组件形式存在的仿真对象;内存模板对象用于封装内存中的独立变量数据源;仿真对象接口模板对象用于封装仿真对象的成员数据接口;全局接口模板对象,用于封装一类具有整型索引参数的对象成员接口。
在数据接口节点2实现了数据的绑定接口201、读写接口202以及事件监听器接口203。
对于不同类型的数据源,绑定接口201具有相同的实现形式。以整形和双精度浮点型数据为例绑定接口的实现方式如表1所示:
表1绑定接口的实现形式
接口名称 | 参数 | 返回值 | 含义 |
Bind | BaseValue<int> | 布尔值 | 绑定整数型的数据源 |
Bind | BaseValue<double> | 布尔值 | 绑定双精度浮点型的数据源 |
如表1所示,绑定接口201的接口名称为Bind,数据源不论是整形数据还是双精度浮点型数据,返回值均为布尔类型。绑定接口201由节点管理对象3使用,并不直接暴露给外部的仿真对象。
读写接口202的实现方式,以访问整型数据int为例,如表2所示:
表2数据读写接口的实现方式
接口名称 | 参数 | 返回值 | 含义 |
getIntValue | -- | int | 从数据源获取最新值 |
setIntValue | Int | -- | 将输入数据写入数据源 |
表2中,针对整型数据,实现读写接口202的功能有接口getIntValue与接口setIntValue,分别实现该读写接口202的读出和写入功能。针对其它类型的读写接口202的实现形式与表2中所述类似。
时间监听器接口203以回调的方式工作,触发事件的一方调用,处于监听的一方接收。以响应绑定数据发生变化的事件为例,时间监听器接口valueChange的实现方式如表3:
表3时间监听器接口的实现方式
接口名称 | 参数 | 返回值 | 含义 |
valueChange | 触发事件的数据接口节点 | -- | 若绑定的数据发生变化,则通知给所有监听节点。 |
在节点管理对象3实现数据节点查询接口301、绑定操作接口302以及数据访问接口303。
数据节点查询接口301的实现形式如表4所示:
表4数据节点查询接口的实现方式
接口名称 | 参数 | 返回值 | 含义 |
FindNode | 索引名称 | 数据接口节点对象 | 根据索引名称搜索节点,并返回给用户 |
如表4所示,数据节点查询接口名称为FindNode,参数为索引名称,返回值为对应的数据接口节点2。
节点管理对象3的绑定操作接口302与绑定接口201具有相同的名称Bind,但接口参数则与被绑定对象有关。若被绑定的是仿真对象的数据接口,则具有以下形式,如表5所示:
表5针对仿真对象数据接口绑定的绑定操作接口的实现形式
若被绑定的是独立变量,则绑定操作接口302具有以下形式,如表6所示:
表6针对独立变量绑定的绑定操作接口的实现形式
表6中,对于独立变量形式的数据源,绑定时需要指定的索引名称和独立变量的指针。表5中,对于以仿真对象数据接口形式存在的数据源,绑定时需要指定索引名称和仿真对象数据接口。
节点管理对象3的数据访问接口303分为数据读取接口和数据写入接口。以整数型数据的访问接口为例,其形式如表7所示:
表7数据访问接口的实现形式
其中,数据读取接口名称为GetInt,数据写入接口名称为SetInt。
当前实施例中包含飞机(Fighter)和雷达(Radar)两个仿真对象。表8列出了仿真对象的部分数据、访问接口以及索引名称:
表8本发明实施例仿真对象的部分数据、访问接口以及索引名称
如表8所示,仿真对象Radar输入仿真对象Fighter的当前位置数据(x,y,z)。对Radar来说,x、y、z是由仿真对象Fighter提供的数据源。以x为例,其索引名称为:Air2GroundFighter/output/posx,数据写入接口setTarposx(double Value),Value为写入的数据,数据读取接口getTarposx()。y、z与x类似。仿真对象Radar的输出为“是否发现目标”标记,即isFindTar参数。对仿真对象Fighter而言,参数isFindTar是由Radar提供的数据源,索引名称为:Radar/output/isfindtar。
本实施例仿真运行分为初始化过程和运行过程,具体运行过程如下。
在初始化过程,首先创建节点管理对象3。仿真对象根据自己提供的数据源创数据接口节点2,交给节点管理对象3管理。节点管理对象3通过内部建立的“树”型结构管理多个仿真对象的数据接口节点2。
在仿真运行时刻,采用第一种方式进行数据交互。仿真对象通过索引名称从节点管理对象3获得相应的数据接口节点2,再通过该数据接口节点2的读写接口访问数据,数据通过节点管理对象3访问接口返回给仿真对象。
Claims (10)
1.一种用于计算机生成兵力仿真系统的数据池,其特征在于,由模板组、数据接口节点和节点管理对象组成;
所述模板组用于对仿真对象不同的数据源进行封装,包括4类模板对象:COM组件模板对象,用于封装具有COM组件形式的数据源;内存模板对象,用于封装存在于内存中的数据源;仿真对象接口模板对象,用于封装具有仿真对象的数据接口形式的数据源;全局接口模板对象用于封装以全局接口形式存在的数据源;
所述数据接口节点是在模板对象基础上对数据源进一步封装;
所述节点管理对象管理数据接口节点,并将索引名称与数据接口节点绑定;
仿真对象向节点管理对象传递索引名称,节点管理对象返回与该名称绑定的数据接口节点,该数据接口节点通过访问模板组中的模板对象获取数据,节点管理对象将获取的数据返回给仿真对象模板。
2.根据权利要求1所述的一种用于计算机生成兵力仿真系统的数据池,其特征在于,所述各模板对象封装不同类型的数据源,是对数据源进行读、写以及数据自身复制的操作。
3.根据权利要求1所述的一种用于计算机生成兵力仿真系统的数据池,其特征在于,所述数据接口节点,其提供数据的绑定接口、读写接口和事件监听器接口;
绑定接口具有相同的接口形式,以模板对象为参数,实现数据源与索引名称的绑定;
读写接口通过访问模板对象实现对数据源的读取和写入;
事件监听器接口负责监听三类事件,包括:数据源的数据发生改变、数据接口节点自身被删除、数据接口节点自身被创建,当这些事件发生时,所有正在监听的数据接口节点都将得到通知。
4.根据权利要求1所述的一种用于计算机生成兵力仿真系统的数据池,其特征在于,所述的节点管理对象,是通过“树”结构来管理数据接口节点,对每个数据接口节点通过唯一的索引名称进行索引,“树”结构的“根节点”表示节点管理对象自身,“根节点”下面为对象,每个对象为数据接口节点的集合,每个对象的下面是各叶结点,各叶结点就是各个数据接口节点。
5.根据权利要求1所述的一种用于计算机生成兵力仿真系统的数据池,其特征在于,所述的节点管理对象,其外部接口包括数据节点查询接口、绑定操作接口和数据访问接口;
数据节点查询接口接收仿真对象传递的索引名称,并返回对应的数据接口节点;
绑定操作接口采用函数指针技术,将不同形式的数据源转换为的数据接口节点绑定在数据池中;
数据访问接口包括数据读取接口和数据写入接口;数据读取接口的参数为索引名称,返回相应数据源的当前数值;数据写入接口的输入参数为索引名称和写入的数值,返回是否成功标志。
6.根据权利要求5所述的一种用于计算机生成兵力仿真系统的数据池,其特征在于,所述绑定操作接口,对于独立变量形式的数据源,绑定时需要指定的索引名称和独立变量的指针,对于以仿真对象数据接口形式存在的数据源,绑定时需要指定索引名称和仿真对象数据接口。
7.一种用于计算机生成兵力仿真系统的数据池实现方法,其特征在于,具体包括如下步骤:
步骤一、构建模板组中的模板对象,将仿真对象的数据在模板组中进行封装;
所述的模板对象实现对数据源的读、写以及数据自身复制的操作,构建有四类:COM组件模板对象用于封装以COM组件形式存在的仿真对象;内存模板对象用于封装内存中的独立变量数据源;仿真对象接口模板对象用于封装仿真对象的成员数据接口;全局接口模板对象,用于封装一类具有整型索引参数的对象成员接口;
步骤二、实现各数据接口节点,将步骤一中经过模板对象封装后的数据进一步封装;
所述数据节点对象实现绑定接口、读写接口以及事件监听接口;绑定接口具有相同的接口形式,以模板对象为参数,实现数据源与索引名称的绑定;读写接口通过访问模板对象来实现对数据源的读出或写入操作;事件监听器接口以回调的方式工作,响应三类事件:数据接口节点自身绑定的数据发生改变、数据接口节点自身被删除以及数据接口节点自身被创建,当一个数据接口节点发生这些事件时,所有正在监听的其它数据接口节点都将得到通知;
步骤三、实现节点管理对象,使能够对每个数据接口节点通过唯一索引名称进行索引;
所述节点管理对象实现数据节点查询接口、绑定操作接口以及数据访问接口;数据节点查询接口接收输入的索引名称,并返回与之关联的数据接口节点;绑定操作接口采用函数指针技术将各数据接口节点绑定在数据池;数据访问接口包括数据读取接口和数据写入接口,数据读取接口的参数为索引名称,返回与索引名称对应的当前数值,数据写入接口的输入参数为索引名称和写入的数值,返回是否成功标志;
步骤四、仿真对象通过数据池,实现对数据的访问。
8.根据权利要求7所述的一种用于计算机生成兵力仿真系统的数据池实现方法,其特征在于,步骤三中所述的绑定操作接口采用函数指针技术将各数据接口节点绑定在数据池,对于独立变量形式的数据源,绑定时需要指定索引名称和独立变量的指针;对于以仿真对象数据接口形式存在的数据源,绑定时需要指定索引名称和仿真对象数据接口。
9.根据权利要求7所述的一种用于计算机生成兵力仿真系统的数据池实现方法,其特征在于,步骤三中所述的节点管理对象,是通过“树”结构管理数据接口节点,“树”结构的“根节点”表示节点管理对象自身,“根节点”下面为对象,每个对象表示为数据接口节点的集合,各对象各自的下面是各叶结点,各叶结点就是各个数据接口节点。
10.根据权利要求7所述的一种用于计算机生成兵力仿真系统的数据池实现方法,其特征在于,步骤四中所述的仿真对象实现对数据的访问,包括两种方式:第一种方式是仿真对象通过索引名称从节点管理对象获得相应的数据接口节点,再通过该数据接口节点的读写接口访问数据,数据通过节点管理对象访问接口返回给仿真对象;第二种方式是仿真对象通过节点管理对象访问数据源,节点管理对象将数据直接返回给仿真对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010197089 CN101872358B (zh) | 2010-06-02 | 2010-06-02 | 用于计算机生成兵力仿真系统的数据池及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010197089 CN101872358B (zh) | 2010-06-02 | 2010-06-02 | 用于计算机生成兵力仿真系统的数据池及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101872358A true CN101872358A (zh) | 2010-10-27 |
CN101872358B CN101872358B (zh) | 2013-01-16 |
Family
ID=42997222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010197089 Expired - Fee Related CN101872358B (zh) | 2010-06-02 | 2010-06-02 | 用于计算机生成兵力仿真系统的数据池及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101872358B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521129A (zh) * | 2011-12-08 | 2012-06-27 | 北京新媒传信科技有限公司 | 一种自绘窗口的测试方法和装置 |
CN106648658A (zh) * | 2016-12-21 | 2017-05-10 | 北京航空航天大学 | 面向实况/虚拟/构造混合系统的仿真方法 |
CN113312802A (zh) * | 2021-07-29 | 2021-08-27 | 中国人民解放军国防科技大学 | 一种基于异构系统的联合仿真方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169716A (zh) * | 2007-11-30 | 2008-04-30 | 清华大学 | 一种基于产品结构树的仿真流程信息建模及维护方法 |
-
2010
- 2010-06-02 CN CN 201010197089 patent/CN101872358B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169716A (zh) * | 2007-11-30 | 2008-04-30 | 清华大学 | 一种基于产品结构树的仿真流程信息建模及维护方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521129A (zh) * | 2011-12-08 | 2012-06-27 | 北京新媒传信科技有限公司 | 一种自绘窗口的测试方法和装置 |
CN102521129B (zh) * | 2011-12-08 | 2014-10-22 | 北京新媒传信科技有限公司 | 一种自绘窗口的测试方法和装置 |
CN106648658A (zh) * | 2016-12-21 | 2017-05-10 | 北京航空航天大学 | 面向实况/虚拟/构造混合系统的仿真方法 |
CN106648658B (zh) * | 2016-12-21 | 2019-08-27 | 北京航空航天大学 | 面向实况/虚拟/构造混合系统的仿真方法 |
CN113312802A (zh) * | 2021-07-29 | 2021-08-27 | 中国人民解放军国防科技大学 | 一种基于异构系统的联合仿真方法和装置 |
CN113312802B (zh) * | 2021-07-29 | 2021-10-12 | 中国人民解放军国防科技大学 | 一种基于异构系统的联合仿真方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101872358B (zh) | 2013-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Banciihon | Object-oriented database systems | |
CN100557609C (zh) | 一种持久层生成方法及装置 | |
Letkowski | Doing database design with MySQL | |
CN102609255B (zh) | 一种Spring IOC配置文件的生成方法 | |
CN106648658B (zh) | 面向实况/虚拟/构造混合系统的仿真方法 | |
CN101196926A (zh) | 一种数据库访问平台及其访问方法 | |
Varela | Programming Distributed Computing Systems: A Foundational Approach | |
CN103853759B (zh) | 一种自适应表单的生成方法及系统 | |
CN101146281A (zh) | 一种面向移动终端的创建图形用户界面模型 | |
Dittrich | Object-oriented database systems: the next miles of the marathon | |
Hidaka et al. | Towards a compositional approach to model transformation for software development | |
CN102902811A (zh) | 一种快速生成树结构的数据库设计方法 | |
CN105243237A (zh) | 一种装配工艺结构树及其构建方法 | |
CN111666355B (zh) | 一种领域、数据、场景三层模型的模型构建方法及装置 | |
CN105468793A (zh) | 一种仿真模型数据的自动化管理方法 | |
CN101872358B (zh) | 用于计算机生成兵力仿真系统的数据池及其实现方法 | |
Krótkiewicz | A novel inheritance mechanism for modeling knowledge representation systems | |
Reid et al. | History of coarrays and SPMD parallelism in Fortran | |
CN103809944A (zh) | 一种基于jdbc的web数据库开发组件的方法 | |
CN110083339A (zh) | 一种新型计算机编程语言 | |
CN102970354A (zh) | 基于超资源融合的云计算体系的构造方法 | |
Ehrig et al. | Dynamic abstract data types based on algebraic graph transformations | |
Gao et al. | Achieving Transparent and Real-time Collaboration in Co-AutoCAD Application. | |
CN105989117A (zh) | 一种半结构化数据快速联合处理的方法及系统 | |
Blaha et al. | Requirements for repository software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130116 Termination date: 20130602 |