首页> 中国专利> 面向对象编程语言的对象的扩展方法及装置

面向对象编程语言的对象的扩展方法及装置

摘要

本发明提供一种面向对象编程语言的对象的扩展方法及装置,方法包括:建立面向对象编程语言的基类对象;将基类对象注册至外部的功能注册表;运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;执行确定的所述目标基类对象。本发明能够有效地将对象间的复杂依赖关系转化为一个线性的功能注册表,对功能注册表进行线性遍历,从而实现对象的特有功能,提高了面向对象的兼容性,进而提高面向对象开发的灵活性。

著录项

  • 公开/公告号CN112882685A

    专利类型发明专利

  • 公开/公告日2021-06-01

    原文格式PDF

  • 申请/专利权人 中国石油天然气股份有限公司;

    申请/专利号CN201911197495.0

  • 发明设计人 孙夕平;李凌高;于永才;梅胜全;

    申请日2019-11-29

  • 分类号G06F8/20(20180101);G06F8/30(20180101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人赵平;周永君

  • 地址 100007 北京市东城区东直门北大街9号

  • 入库时间 2023-06-19 11:11:32

说明书

技术领域

本发明涉及计算机软件技术领域,具体涉及一种面向对象编程语言的对象的扩展方法及装置。

背景技术

面向对象的编程语言是最重要的计算机软件开发语言之一,广泛应用于各行各业的软件开发。面向对象机制的三大特点:继承、封装与多态。对象从父类(基类)派生,继承父类的公有方法与数据,同时又具有自己的特有方法与数据,任何一个对象,从父类从发,都可以看成一棵对象树,其功能与数据不断增强,这是面向对象技术的核心。

在软件开发中,子对象的方法与数据,很大部分都是继承自父类或者父类的父类,在应用中要得到一个对象的应用,就需要知道所有父类的声明(头文件)及实现,这种对象间继承的内在的依赖关系是必然存在的。

但是,在大型的软件系统开发中,复杂的对象间的依赖关系,导致有时无法得到父类对象的声明,有时也得不到对象的声明,成为软件开发的一大难点。

发明内容

针对现有技术中的问题,本发明提供一种地震数据中强反射信号分离方法及装置,能够有效提高地震数据中的强反射信号的分离准确性,且能够有效提高分离强反射信号后得到的有效信号的保真性。

为解决上述技术问题,本发明提供以下技术方案:

第一方面,本发明提供一种面向对象编程语言的对象的扩展方法,包括:

建立面向对象编程语言的基类对象;

将基类对象注册至外部的功能注册表;

运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;

执行确定的所述目标基类对象。

其中,所述建立面向对象编程语言的基类对象,包括:

确定基类对象的区分编码、功能类别编码和名称;

通过虚函数的方式声明区分编码、功能类别编码和名称,得到基类对象。

进一步的,还包括:

根据所述基类对象的名称和hash函数建立用于检索基类对象的检索表;

相对应的,所述将基类对象注册至外部的功能注册表,包括:

将所述基类对象和所述检索表注册至外部的功能注册表。

其中,所述遍历所述功能注册表并确定目标基类对象,包括:

根据所述目标基类对象的目标名称,遍历所述检索表并确定所述检索表中所述目标名称对应的基类对象;

其中,确定所述检索表中所述目标名称对应的基类对象为目标基类对象。

其中,所述遍历所述功能注册表并确定目标基类对象,包括:

通过所述功能类别编码和/或所述名称确定基类对象中的目标基类对象。

其中,所述功能注册表是根据所述基类对象生成的线性表。

第二方面,本发明提供一种面向对象编程语言的对象的扩展装置,包括:

声明单元,用于建立面向对象编程语言的基类对象;

注册单元,用于将基类对象注册至外部的功能注册表;

遍历单元,用于运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;

执行单元,用于执行确定的所述目标基类对象。

其中,所述声明单元包括:

划分模块,用于确定基类对象的区分编码、功能类别编码和名称;

声明模块,用于通过虚函数的方式声明区分编码、功能类别编码和名称,得到基类对象。

进一步的,还包括:

检索模块,用于根据所述基类对象的名称和hash函数建立用于检索基类对象的检索表;

相对应的,所述注册单元包括:

注册子单元,用于将所述基类对象和所述检索表注册至外部的功能注册表。

其中,所述遍历单元包括:

第一遍历模块,用于根据所述目标基类对象的目标名称,遍历所述检索表并确定所述检索表中所述目标名称对应的基类对象;

其中,确定所述检索表中所述目标名称对应的基类对象为目标基类对象。

其中,所述遍历单元包括:

第二遍历模块,用于通过所述功能类别编码和/或所述名称确定基类对象中的目标基类对象。

其中,所述功能注册表是根据所述基类对象生成的线性表。

第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的面向对象编程语言的对象的扩展方法的步骤。

第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的面向对象编程语言的对象的扩展方法的步骤。

由上述技术方案可知,本发明提供一种面向对象编程语言的对象的扩展方法及装置,通过建立面向对象编程语言的基类对象;将基类对象注册至外部的功能注册表;运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;执行确定的所述目标基类对象,能够有效地将对象间的复杂依赖关系转化为一个线性的功能注册表,对功能注册表进行线性遍历,从而实现对象的特有功能,提高了面向对象的兼容性,进而提高面向对象开发的灵活性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中的面向对象编程语言的对象的扩展方法的第一种流程示意图。

图2为本发明实施例中的面向对象编程语言的对象的扩展方法的第二种流程示意图。

图3为本发明实施例中的面向对象编程语言的对象的扩展装置的结构示意图。

图4为本发明实施例中的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供一种面向对象编程语言的对象的扩展方法的实施例,参见图1,所述面向对象编程语言的对象的扩展方法具体包含有如下内容:

S101:建立面向对象编程语言的基类对象;

在本步骤中,建立面向对象编程语言的基类对象需要确定基类对象的区分编码、功能类别编码和名称;通过虚函数virtual的方式声明区分编码、功能类别编码和名称,得到基类对象。

其中,通过区分编码能够对不同的基类对象进行自定义编码区分。

例如:virtual int type,声明基类对象的功能类别编码,virtual const char*name,声明基类对象的名称。

可以理解的是,基类对象为父类对象。

S102:将基类对象注册至外部的功能注册表;

在本步骤中,将建立的基类对象注册至外部的功能注册表中,其中,功能注册表是根据基类对象生成的线性表,并提供一系列的函数,例如:查找、注册、注销、排序和检索。将基类对象注册至功能注册表中时,分别通过关键字regist和关键字unregist,向功能注册表中注册新的扩展功能和注销特定的扩展功能。

需要说明的是,外部指的是被执行的面向对象程序的外部。

S103:运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;

在本步骤中,基于面向对象编程语言能够建立面向对象程序,运行面向对象程序时,执行面向对象程序中所调用的目标基类对象。基于该目标基类对象在功能注册表中确定该目标基类对象。

在具体实施时,根据目标基类对象遍历功能注册表即可在功能注册表中确定目标基类对象。在具体实施时,通过所述功能类别编码和/或所述名称确定基类对象中的目标基类对象。

通过功能类别编码和/或名称可以快速检索、定位基类对象。

S104:执行确定的所述目标基类对象。

在本步骤中,在功能注册表中确定目标基类对象并执行确定的目标基类对象。

从上述描述可知,本发明实施例提供的面向对象编程语言的对象的扩展方法,通过建立面向对象编程语言的基类对象;将基类对象注册至外部的功能注册表;运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;执行确定的所述目标基类对象,能够有效地将对象间的复杂依赖关系转化为一个线性的功能注册表,对功能注册表进行线性遍历,从而实现对象的特有功能,提高了面向对象的兼容性,进而提高面向对象开发的灵活性。

在本发明的一实施例中,参见图2,步骤S101之后还包括步骤S105,具体包含有如下内容:

S105:根据所述基类对象的名称和hash函数建立用于检索基类对象的检索表;

相对应的,S102所述将基类对象注册至外部的功能注册表,包括:S1021:将所述基类对象和所述检索表注册至外部的功能注册表。

在本步骤中,通过建立检索表能够实现快速检索、定位、运行的工作机制,在具体实施时,根据目标基类对象的目标名称,遍历检索表并确定所述检索表中所述目标名称对应的基类对象;

其中,确定所述检索表中所述目标名称对应的基类对象为目标基类对象。

进一步的,采用hash函数建立检索表(hash表),能够实现快速检索、定位、运行的工作机制,进而通过名称查找可以得到基类对象的通过检索表能够表加快检索。

从上述描述可知,本发明实施例提供的面向对象编程语言的对象的扩展方法,能够将复杂对象间关系简化为注入机制;这种注入机制提供了对象的前向支持与后向兼容;提供了对象的扩展功能可以被中止或替换;对象的接口简单、标准,具有的通用性、一致性,具有稳定性、确定性和不变性的静态描述功能;采用这种机制的对象,其功能可以动态增加、中止、替换、调整,具有开放性特征。

本发明实施例提供一种能够实现所述面向对象编程语言的对象的扩展方法中全部内容的面向对象编程语言的对象的扩展装置的具体实施方式,参见图3,所述面向对象编程语言的对象的扩展装置具体包括如下内容:

声明单元10,用于建立面向对象编程语言的基类对象;

注册单元20,用于将基类对象注册至外部的功能注册表;

遍历单元30,用于运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;

执行单元40,用于执行确定的所述目标基类对象。

其中,所述声明单元包括:

划分模块,用于确定基类对象的区分编码、功能类别编码和名称;

声明模块,用于通过虚函数的方式声明区分编码、功能类别编码和名称,得到基类对象。

进一步的,还包括:

检索模块50,用于根据所述基类对象的名称和hash函数建立用于检索基类对象的检索表;

相对应的,所述注册单元包括:

注册子单元,用于将所述基类对象和所述检索表注册至外部的功能注册表。

其中,所述遍历单元包括:

第一遍历模块,用于根据所述目标基类对象的目标名称,遍历所述检索表并确定所述检索表中所述目标名称对应的基类对象;

其中,确定所述检索表中所述目标名称对应的基类对象为目标基类对象。

其中,所述遍历单元包括:

第二遍历模块,用于通过所述功能类别编码和/或所述名称确定基类对象中的目标基类对象。

其中,所述功能注册表是根据所述基类对象生成的线性表。

本发明提供的面向对象编程语言的对象的扩展装置的实施例具体可以用于执行上述实施例中的面向对象编程语言的对象的扩展方法的实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。

从上述描述可知,本发明实施例提供的面向对象编程语言的对象的扩展装置,通过建立面向对象编程语言的基类对象;将基类对象注册至外部的功能注册表;运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;执行确定的所述目标基类对象,能够有效地将对象间的复杂依赖关系转化为一个线性的功能注册表,对功能注册表进行线性遍历,从而实现对象的特有功能,提高了面向对象的兼容性,进而提高面向对象开发的灵活性。

本申请提供一种用于实现所述面向对象编程语言的对象的扩展方法中的全部或部分内容的电子设备的实施例所述电子设备具体包含有如下内容:

处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例用于实现所述面向对象编程语言的对象的扩展方法的实施例及用于实现所述面向对象编程语言的对象的扩展装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。

图4为本申请实施例的电子设备9600的系统构成的示意框图。如图4所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图4是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。

一实施例中,面向对象编程语言的对象的扩展功能可以被集成到中央处理器9100中。其中,中央处理器9100可以被配置为进行如下控制:建立面向对象编程语言的基类对象;将基类对象注册至外部的功能注册表;运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;执行确定的所述目标基类对象。

从上述描述可知,本申请的实施例提供的电子设备,通过建立面向对象编程语言的基类对象;将基类对象注册至外部的功能注册表;运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;执行确定的所述目标基类对象,能够有效地将对象间的复杂依赖关系转化为一个线性的功能注册表,对功能注册表进行线性遍历,从而实现对象的特有功能,提高了面向对象的兼容性,进而提高面向对象开发的灵活性。

在另一个实施方式中,面向对象编程语言的对象的扩展装置可以与中央处理器9100分开配置,例如可以将面向对象编程语言的对象的扩展配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现面向对象编程语言的对象的扩展功能。

如图4所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图4中所示的所有部件;此外,电子设备9600还可以包括图4中没有示出的部件,可以参考现有技术。

如图4所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。

其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。

输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。

该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。

存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。

通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。

基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。

本发明的实施例还提供能够实现上述实施例中的面向对象编程语言的对象的扩展方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的面向对象编程语言的对象的扩展方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:

建立面向对象编程语言的基类对象;将基类对象注册至外部的功能注册表;运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;执行确定的所述目标基类对象。

从上述描述可知,本发明实施例提供的计算机可读存储介质,通过建立面向对象编程语言的基类对象;将基类对象注册至外部的功能注册表;运行面向对象程序调用的所述基类对象中的目标基类对象时,遍历所述功能注册表并确定目标基类对象;执行确定的所述目标基类对象,能够有效地将对象间的复杂依赖关系转化为一个线性的功能注册表,对功能注册表进行线性遍历,从而实现对象的特有功能,提高了面向对象的兼容性,进而提高面向对象开发的灵活性。

虽然本发明提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。

本领域技术人员应明白,本说明书的实施例可提供为方法、装置(系统)或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号