一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

面向对象语言的数据处理方法及装置与流程

2022-12-06 19:28:41 来源:中国专利 TAG:


1.本发明涉及软件开发技术领域,特别涉及一种面向对象语言的数据处理方法及装置。


背景技术:

2.在使用面向对象的语言例如c 语言进行软件开发的过程中,往往需要开发者关注数据持久化操作,涉及模型对象(可以是内存中任何数据结构或者对象模型)和存储对象(保存于磁盘中)的相互转化,实现具体的对象序列化和反序列化方法。在反序列化过程中,开发者需要关注模型对象在不同软件版本下存储结构的改变。在模型对象的拷贝过程中开发者也需要注意其中数据的深度复制。由于c 对象中的每个类需要开发人员单独定义比较分散,因此在上述反序列化、数据拷贝以及数据升级等过程中都需要开发者根据每个类进行单独处理,效率低且容易出错。


技术实现要素:

3.本发明的目的是提供一种能够实现面向对象语言在反序列化、复制、升级等过程中进行高效、准确地处理数据的技术方案,以解决现有技术中存在的上述问题。
4.为实现上述目的,本发明提供一种面向对象语言的数据处理方法,包括以下步骤:
5.根据对象的范畴确定基于schema模式的类集合和属性集合;所述类集合中的每个类用于表征所述对象的嵌套组成结构,所述属性集合中的每个属性用于表征对应类的描述信息;
6.确定所述类之间的继承关系以及所述类和所述属性之间的关联关系;
7.基于所述继承关系和所述关联关系获取所述类集合和所述属性集合中的对应数据,构造面向对象的数据模型。
8.根据本发明提供的面向对象语言的数据处理方法,所述根据对象的范畴确定基于schema模式的类集合和属性集合的步骤包括:
9.确定每个所述类的类名、类构造函数、类唯一识别标识和类版本号;
10.确定每个所述属性的属性名、属性类型、属性内存大小和属性内存位置。
11.根据本发明提供的面向对象语言的数据处理方法,所述方法还包括:
12.在需要对所述数据模型进行复制的情况下,调用预设的复制接口对所述基于schema模式的类集合和属性集合进行深度复制。
13.根据本发明提供的面向对象语言的数据处理方法,所述对所述基于schema模式的类集合和属性集合进行深度复制的步骤包括:
14.使用构造函数构造一个的新schema对象;
15.基于所述新schema对象构造待复制数据,所述待复制数据包括按顺序组成的新schema对象内存空间、虚表地址空间、父类成员的属性集合、父类成员的构造函数、子类成员的属性集合、子类成员的构造函数,其中所述父类成员指的是所述类集合中具有被继承
关系的类,所述子类成员指的是所述类集合中具有继承关系的类;
16.将所述待复制数据存储到新的内存空间,以得到所述数据模型的复制数据。
17.根据本发明提供的面向对象语言的数据处理方法,所述方法还包括:
18.在需要对所述数据模型进行序列化的情况下,调用预设的序列化接口根据所述类集合和所述属性集合嵌套地进行序列化。
19.根据本发明提供的面向对象语言的数据处理方法,所述根据所述类集合和所述属性集合嵌套地进行序列化的步骤包括:
20.将所述数据模型按预设格式存储为待序列化数据,所述待序列化数据包括按顺序组成的类头部信息、父类头部信息、父类属性头部信息集合、子类头部信息、子类属性头部信息集合;其中所述父类指的是所述类集合中具有被继承关系的类,所述子类指的是所述类集合中具有继承关系的类;
21.将所述待序列化数据通过所述序列化接口上传。
22.根据本发明提供的面向对象语言的数据处理方法,所述方法还包括:对所述数据模型进行升级,具体升级步骤包括:
23.获取宏声明以确定所述数据模型的升级方式;
24.基于所述升级方式对所述数据模型的反序列化数据进行修改;
25.将修改后的所述反序列化数据进行序列化,以完成对所述数据模型的升级。
26.为实现上述目的,本发明还提供一种面向对象语言的数据处理装置,包括:
27.框架确定模块,适用于根据对象的范畴确定基于schema模式的类集合和属性集合;所述类集合中的每个类用于表征所述对象的一种嵌套组成结构,所述属性集合中的每个属性用于表征对应类的描述信息;
28.继承关联确定模块,适用于确定所述类之间的继承关系以及所述类和所述属性之间的关联关系;
29.模型构造模块,适用于基于所述继承关系和所述关联关系获取所述类集合和所述属性集合中的对应数据,构面向对象的数据模型。
30.为实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
31.为实现上述目的,本发明还提供计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
32.与现有技术相比,本发明提供的面向对象语言的数据处理方法及装置,提供一套完整的开发技术数据框架,包含模型对象序列化、反序列化、存储数据自动升级,业务对象和数据对象自动转换以及对象的自动深度拷贝功能,极大减轻上层开发者的开发成本。
附图说明
33.图1示出了本发明的面向对象语言的数据处理方法实施例一的流程图;
34.图2示出了本发明实施例一的继承关系和关联关系示意图;
35.图3示出了本发明实施例一进行深度复制的示意图;
36.图4示出了本发明实施例一的二进制待序列化数据示意图;
37.图5示出了本发明实施例一进行数据模型升级的示意性流程图;
38.图6示出了本发明实施例一的一个版本升级示意图;
39.图7示出了本发明的面向对象语言的数据处理装置实施例一的程序模块示意图;
40.图8示出了本发明的面向对象语言的数据处理装置实施例一的硬件结构示意图。
具体实施方式
41.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
42.实施例一
43.请参阅图1,本实施例提出一种面向对象语言的数据处理方法,包括以下步骤:
44.s100:根据对象的范畴确定基于schema模式的类集合和属性集合;所述类集合中的每个类用于表征所述对象的嵌套组成结构,所述属性集合中的每个属性用于表征对应类的描述信息。
45.本实施例引入了数据库技术中的schema模式来定义类集合和属性集合。本领域技术人员理解,数据库中的schema,为数据库对象的集合,一个用户一般对应一个schema。本实施例将schema的概念引入c 对象中,本实施例所称的c 对象通常包括一个数据模型,每个数据模型对应一个schema。不同c 对象的范畴组成不同的数据模型。例如汽车数据模型、机动车数据模型、交通工具数据模型就分别对应不同的范畴,其中交通工具数据模型大于机动车数据模型的范畴,机动车数据模型的范畴大于汽车数据模型的范畴。
46.可以理解,数据模型通常是由多个类组成的,每个类对应一个组成结构。以汽车数据模型为例,其中的类可以包括车身父类和车轮父类,其中车身父类中可以包括车头类、车顶类、车尾类,车轮父类中可以包括第一车轮类、第一车轮类、第一车轮类和第四车轮类等。其中父类和类之间具有嵌套结构,及类隶属于对应的父类,例如第一车轮类、第一车轮类、第一车轮类和第四车轮类隶属于车轮父类,因此第一车轮类、第一车轮类、第一车轮类和第四车轮类与车轮父类之间具有嵌套关系。属性与每个类相对应,用于描述对应类的特征。可以理解,一个类可以对应多个属性。例如第一车轮类的属性可以包含材质属性、颜色属性、花纹属性等。具体的,本实施例中的每个类可以包括类名、类构造函数、类唯一识别标识和类版本号,每个属性可以包括属性名、属性类型、属性内存大小和属性内存位置。其中类名表示每个类的名称,类构造函数用于为每个类的成员变量赋初值,类唯一识别标识用于唯一确定其中一个类,类版本号表示该类的不同开发版本。进一步,属性名、属性类型、属性内存大小和属性内存位置分别定义了属性的名称、类型及存储地址等。
47.s200:确定所述类之间的继承关系以及所述类和所述属性之间的关联关系。
48.类之间的继承关系指的是父类和子类之间的吸收和扩展关系,即子类可以吸收父类的所有属性,并且可以扩展新的属性。类和属性之间的关联关系包括两方面含义,一方面是类所关联的属性,例如上文中第一车轮类材质属性、颜色属性、花纹属性等具有关联关系。另一方面是属性所关联的类,在属性包含的范畴较大的情况下,属性之下也可以对应不同的类。例如花纹属性下可以对应凸纹类和凹纹类,凸纹类和凹纹类之下又可以对应不同
的属性或者子类。
49.图2示出了本发明实施例一的继承关系和关联关系示意图。可以看出,图2中包含两个schema基类模式,其中左侧schema基类模式中的类集合分别包括schema基类、父类1、父类2和类a,上述类之间依次具有继承关系,每个类同时关联有对应的属性,例如父类2与3个属性具有关联关系,其中包括属性1。进一步,在图2右侧schema基类模式中可以看出,类集合包括依次具有继承关系的schema基类、父类2和类b。其中父类2和类b各自关联由对应的属性。其中的schema基类定义了一系列schema数据类通用接口,实际没有真实数据存储。需要说明的是,图2中右侧schema基类模式是与左侧schema基类模式中的属性1具有关联关系的,即本实施例中的属性也可以根据需要扩展为schema基类模式。这样可以适应更多的应用场景,提高软件开发的效率。
50.s300:基于所述继承关系和所述关联关系获取所述类集合和所述属性集合中的对应数据,构造面向对象的数据模型。
51.在schema基类模式中的类集合、属性集合、类与类之间的继承关系、类与属性之间的额关联关系都确定的基础上,本实施例可以调用预设接口以获得实例数据,从而得到实例化的数据模型。本实施例中的schema基类定义了一系列接口供框架调用。最主要的是获取类schema接口。系列辅助宏则通过宏定义的方式方便开发者构造自己的schema类,并声明数据的升级等操作。比如通过形如data_begin(class_name,parent_name,class_id)和data(type,name)这样的宏来定义数据类和其中的数据,利用形如add_property(type,name)这样的宏来声明版本间的数据升级。
52.通过上述步骤,本实施例在schema模式下提取对象的类集合和属性集合,通过类和属性之间的继承关系和关联关系载入不同的业务数据,从而可以使得一个框架满足多种不同的业务场景,提高软件开发效率。
53.根据本发明实施例一的一个示例,在需要对所述数据模型进行复制的情况下,调用预设的复制接口对所述基于schema模式的类集合和属性集合进行深度复制。具体复制过程包括,先使用构造函数构造一个的新schema对象。然后在父类以及自身属性schema的指导下直接将待拷贝对象中的对应属性内存拷贝到新对象中,实现完全自动的深度拷贝。值得注意的是,上述的属性可以是简单的属性,那么拷贝将是简单的内存拷贝,属性也可以是一个复杂的schema对象属性,此时将递归地调用schema类的对象拷贝。图3示出了本发明实施例一进行深度复制的示意图。其中图3左侧显示的是待拷贝对象,右侧显示的是拷贝得到对象。可以看出,图3中的待拷贝对象包括按顺序组成的新schema对象内存空间、虚表地址空间、父类成员的属性集合(例如父类成员属性1、父类成员属性2等)、父类成员的构造函数、子类成员的属性集合(例如子类成员属性1、子类成员属性2等)、子类成员的构造函数。其中所述父类成员指的是所述类集合中具有被继承关系的类,所述子类成员指的是所述类集合中具有继承关系的类。从图3可以看出,最终拷贝得到对象与待拷贝对象的数据结构是完全一致的。由此开发人员无需关注单个对象类,只需调用接口即可自动实现数据对象的深度拷贝。
54.根据本发明实施例一的一个示例,在需要对所述数据模型进行序列化的情况下,可以调用预设的序列化接口根据所述类集合和所述属性集合嵌套地进行序列化。具体的,可以将所述数据模型按预设格式存储为待序列化数据,然后将所述待序列化数据通过所述
序列化接口上传。图4为本发明实施例一的二进制待序列化数据示意图。如图4所示,所述待序列化数据包括按顺序组成的类头部信息、父类头部信息、父类属性头部信息集合、子类头部信息、子类属性头部信息集合。类头部信息包含这个数据模型的二进制数据长度,类型等。该类父类的头部信息,同样包含父类对象的二进制数据长度、父类对象类型等。紧跟着的是父类属性的头部信息和父类属性的二进制数据。属性的头部包含属性类型和属性长度等。之后再是子类的属性头部和子类的属性二进制数据。
55.如果存储的数据格式与软件的数据格式一致,则可以方便地根据上述的数据反序列化为c 内存对象。如果数据格式相对稳定,开发也可以对每一种数据格式的升级做特殊的处理。但在软件的持续开发和发布中,数据格式往往会有较多的频繁的改变。该发明也包含了一套基于schema的自动数据格式升级框架。用户使用系列辅助宏可以简单声明数据格式升级的方式,比如增加属性、更改属性值、移动属性等。框架在反序列化数据时,会创建中间内存模型对象来自动处理这些升级,得到最新的c 对象。
56.图5为本发明实施例一进行数据模型升级的示意性流程图。如图5所示,对所述数据模型进行升级的步骤包括:
57.s510:获取宏声明以确定所述数据模型的升级方式。例如通过形如add_property(type,name)这样的宏来声明版本间的数据升级。这样,在获取到与版本升级相关的宏声明的基础上,可以确定新版本相对于旧版本做了哪些更改,从而基于这些更改在旧版本的基础上直接做出升级。
58.s520:基于所述升级方式对所述数据模型的反序列化数据进行修改。
59.图6为本发明实施例一的一个版本升级示意图。如图6所示,内存对象模型为树形结构,包括依次具有继承关系的类a、父类1和父类2。其中父类2关联的属性有属性1和属性2,父类1关联的属性有属性3和属性4,类a关联的属性有属性5和属性6。其中,属性1、属性3和5为基础属性,即包含单一数据;属性2、属性4和属性6为复合属性,即上述属性与其它类相关联(图未示)。图6中,版本1对应的树形结构为旧版本,版本2对应的树形结构为新版本。当内存对象模型从版本1升级为版本2时,通过宏声明确定该数据模型的具体升级方式。例如,当用户通过宏声明类a增加新的属性7。软件打开旧存储数据时,将根据类a保存时的schema得到左图的内存对象模型,并把存储的数据载入到模型的各个节点中。框架根据用户的声明,添加一个叶子节点即属性7到这个内存对象模型中,得到右图所示新的对象模型,然后再根据新的对象模型得到c 对象。可以理解,上述软件升级时增加一个属性仅仅作为示例,而不是对本实施例的限制。通用的任意升级方式包括增加类属性,删除类属性,修改属性名,修改属性类型,移动属性到父类中等都在本实施例的保护范围之内。
60.s530:将修改后的所述反序列化数据进行序列化,以完成对所述数据模型的升级。
61.序列化的过程可参考图4。具体的,将升级后的数据模型按预设格式存储为待序列化数据,然后将所述待序列化数据通过所述序列化接口上传。其中该待序列化数据包括按顺序组成的类头部信息、父类头部信息、父类属性头部信息集合、子类头部信息、子类属性头部信息集合等。
62.通过上述过程,本实施例提供的框架根据开发者宏声明即可自动实现新旧版本之间的升级,升级过程操作简单,准确性高,可以有效提高数据模型的升级效率。
63.请继续参阅图7,示出了一种面向对象语言的数据处理装置,在本实施例中,面向
对象语言的数据处理装置70可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述c 对象的处理方法。本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述日志管理装置70在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:
64.框架确定模块71,适用于根据对象的范畴确定基于schema模式的类集合和属性集合;所述类集合中的每个类用于表征所述对象的一种嵌套组成结构,所述属性集合中的每个属性用于表征对应类的描述信息;
65.继承关联确定模块72,适用于确定所述类之间的继承关系以及所述类和所述属性之间的关联关系;
66.模型构造模块73,适用于基于所述继承关系和所述关联关系获取所述类集合和所述属性集合中的对应数据,构造面向对象的数据模型。
67.通过上述装置,本实施例在schema模式下提取对象的类集合和属性集合,通过类和属性之间的继承关系和关联关系载入不同的业务数据,从而可以使得一个框架满足多种不同的业务场景,提高软件开发效率。
68.本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备80至少包括但不限于:可通过系统总线相互通信连接的存储器81、处理器82,如图8所示。需要指出的是,图8仅示出了具有组件81-82的计算机设备80,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
69.本实施例中,存储器81(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器81可以是计算机设备80的内部存储单元,例如该计算机设备80的硬盘或内存。在另一些实施例中,存储器81也可以是计算机设备80的外部存储设备,例如该计算机设备80上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。当然,存储器81还可以既包括计算机设备80的内部存储单元也包括其外部存储设备。本实施例中,存储器81通常用于存储安装于计算机设备80的操作系统和各类应用软件,例如实施例一的面向对象语言的数据处理装置70的程序代码等。此外,存储器81还可以用于暂时地存储已经输出或者将要输出的各类数据。
70.处理器82在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器82通常用于控制计算机设备80的总体操作。本实施例中,处理器82用于运行存储器81中存储的程序代码或者处理数据,例如运行面向对象语言的数据处理装置70,以实现实施例一的面向对象语言的数据处理方法。
71.本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器
(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储面向对象语言的数据处理装置70,被处理器执行时实现实施例一的面向对象语言的数据处理方法。
72.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
73.流程图中或在此以其它方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
74.本技术领域的普通技术人员可以理解,实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
75.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
76.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
77.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献