百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

LabVIEW面向对象编程(LVOOP)(一) labview面向对象编程pdf百度云

haoteby 2024-12-29 03:20 5 浏览

虽然LabVIEW主要基于数据流编程,但它也支持面向对象编程(OOP)的概念,这使得代码更加模块化、可重用和易于维护。下面将将简要介绍LabVIEW中OOP编程的一些基本概念,及如何实现LabVIEW OOP编程。

LabVIEW面向对象编程(LVOOP)的优点

1)模块化与封装:通过创建类和对象,可以将功能相关的代码封装在一起,形成独立的模块。这有助于减少代码冗余,提高代码的可读性和可维护性。

2)代码重用:通过继承和多态等OOP特性,可以在不同的程序或项目中重用已有的类和对象,提高开发效率。

3)扩展性:面向对象的设计使得添加新功能或修改现有功能变得更容易,因为可以通过继承现有类来创建新类,或者通过修改类的行为来实现功能扩展。

4)易于团队协作:OOP的模块化特性使得多人协作开发变得更容易,每个人可以专注于特定的类或对象,最后将它们组合在一起形成完整的程序。

LVOOP编程基本概念

1)类和对象:

在面向对象编程中,类用来表示通用特性。比如我们今天要讲的万用表类,类中定义了各种万用表的通用特性。对象是类的特定实例,万用表类的一个对象,可以是某一特定型号的万用表,比如Keysight 34461A万用表、Rigol DM3068万用表等。类的定义决定该万用表(对象)的行为。

类中定义了和对象相关的数据和方法,比如万用表类,万用表物理地址、测量类型、测量值等信息都是万用表的相关数据,而万用表在使用过程中一般都需要执行初始化、测量配置、测量、关闭等行为(或称之为方法)。万用表相关的数据和方法,构成了万用表类的定义。通过类的创建,可定义对象的数据和方法。下图示范了万用表类在LabVIEW中的表示,LabVIEW将万用表类的数据存储在DMM.ctl中,将万用表的方法存储在DMM Init VI、DMM Config VI、DMM Meas VI和DMM Close VI中。

对象是类的特定实例。指定的某一型号的万用表是万用表类的一个特定实现,或称为万用表类的一个对象。下列VI的程序框图中,有三个万用表类的对象。对象包含哪些数据和方法,是通过类来定义的。LabVIEW将类的数据存储在一个控件中,用户创建的成员VI即是LabVIEW类的方法。

2)创建LabVIEW类:

通过创建LabVIEW类,可在LabVIEW中创建用户定义的数据类型。LabVIEW类定义了对象相关的数据和可对数据执行的操作(即方法)。通过封装和继承可创建模块化的代码,使代码更易修改而不影响应用程序中的其它代码。

在LabVIEW中,类的数据是私有的,即只有类的成员VI才能访问该数据。类的数据可在私有数据控件中定义。创建和保存LabVIEW类时,LabVIEW将创建一个类库文件(.lvclass),其中定义了新的数据类型。类库文件记录了私有数据控件和所有被创建的成员VI的信息,比如VI列表以及VI各自的不同属性。私有数据控件对应唯一的类库文件,其中为新的数据类型定义了一簇数据,该簇也是类连线上的数据。

LabVIEW的私有数据控件并不保存在磁盘上,而是保存在类库文件中。由于在类库文件中保存私有数据,因此只有类中定义的成员VI才能访问这些数据。

3)封装:

每个LabVIEW类包括一个数据簇和用于读写该簇的方法。LabVIEW类的数据是私有的,对于不是该类成员的VI来说是隐藏的。如需访问类的私有数据,必须创建方法,即创建该类的成员VI,通过成员VI中的函数对私有数据执行操作。封装就是将数据和方法合并到一个类中,类中数据仅可由类的成员VI访问。通过封装可创建模块化代码,有利于方便地更新或修改代码而不影响应用程序中其它部分的代码。

创建LabVIEW类时,LabVIEW将自动创建类的私有数据控件。在项目浏览器窗口中,LabVIEW类的图标是一个有色立方体,该立方体用于代表一个LabVIEW类。私有数据控件的图标是一个带有绿色圆柱体的有色立方体。圆柱体用于代表数据存储。同时,私有数据控件的图标中有一个红色钥匙符号,表示该控件是私有的。

通过控件编辑器窗口可对类的私有数据控件进行自定义。在项目浏览器窗口中双击类的私有数据控件,即可打开“控件编辑器”窗口,修改类的私有数据控件等。

通过创建成员VI(或称创建方法),可对类的私有数据执行操作。成员VI是LabVIEW类的方法,在LabVIEW类中创建,并在项目浏览器窗口中该类的私有数据控件下出现。LabVIEW将类的数据定义为一个簇。所有成员VI都可对类数据的簇进行读写。LabVIEW为创建用于访问簇中各元素的VI提供了捷径。

可使用解除捆绑或按名称解除捆绑函数,在成员VI的程序框图中对类的私有数据解除捆绑。使用捆绑或按名称捆绑函数可在访问和操作私有数据之后,将数据重新捆绑成簇。由于类的数据是私有的,若试图在非该类成员VI的程序框图中通过“捆绑”和“解除捆绑”节点访问该类数据,节点将自动断开无法运行。

4)继承:

通过“继承”可在现有类的基础上创建新类。若创建一个新的LabVIEW类并将它设置为继承另一个类的数据及成员VI,这个新类将可使用它所继承的类中“公共”及“保护”型的成员VI。这个新类还可添加自己的数据和成员VI以丰富其功能。例如,“万用表”类的私有数据包括物理地址、测量类型等。如创建了一个名为“34461A”类的新类,可将“34461A”类设置为继承万用表类,并对“34461A”类添加布尔数据类型“AutoRange”。但是,在对LabVIEW类进行捆绑或解除捆绑时,节点上仅显示当前类私有数据的接线端,而不显示从祖先类继承的任何数据的接线端。

祖先类的数据是私有的,必须使用祖先类提供的函数(成员VI)才能修改这些数据。子孙类的成员VI可以调用祖先类任何“公共”型的成员VI,就像调用LabVIEW中的其它VI一样。子孙类的成员VI也可以调用祖先类“保护”型的成员VI。若指定一个祖先类成员VI为“保护”型,则其任何子类的成员VI可以调用其方法,但该类继承层次结构以外的任何其它VI都不能调用其方法。

注意,LabVIEW类不可调用另一个LabVIEW类的“私有”型成员VI,即使是父类,也无法调用其子类的私有成员VI。类的“私有”成员VI只能由这个类的其它成员VI在程序框图中调用。

默认状态下,所有LabVIEW类都是从“LabVIEW对象”继承而来的。如果要更改一个类的继承关系,必须在创建该类之后更改继承。通过类属性对话框,可设置类的继承关系和其它选项。在LabVIEW类层次结构窗口中,可查看LabVIEW类的层次结构。

类继承的层次结构可包括下列类型的类:

  • 父类-供其它LabVIEW类继承数据、“公共”型成员VI和“保护”型成员VI的LabVIEW类。
  • 子类-继承父类的公共和受保护成员VI的LabVIEW类。除非父类提供访问VI,否则子类不继承父类的私有数据。
  • 兄弟类-和一个LabVIEW类继承同一个父类的另一个LabVIEW类。
  • 祖先类-一个LabVIEW类的上一层(父类)、上二层(父类的父类)、上三层等等。“LabVIEW对象”是所有LabVIEW类的始祖。
  • 子孙类-一个LabVIEW类的下一层(子类)、下二层(子类的子类)、下三层等等。

注: 如创建的VI重写父级LabVIEW类中的属性访问器VI,则必须在子类和父类的属性定义文件夹中指定相同的名称和文件夹路径。

5)连线外观:

类定义了新的数据类型,通过类属性对话框可对LabVIEW类更改连线外观。适当地更改不同LabVIEW类的连线外观,可提高程序框图的可读性。

6)动态和静态分配成员VI:

方法是在对象上执行的操作。在LabVIEW面向对象编程中,方法是用户创建的成员VI。成员VI在LabVIEW类的数据上进行运算。某些方法可用单个VI定义。这些方法称为静态分配方法,因为LabVIEW每次调用的是同一个VI。有时也可在类层次结构的多个VI中定义同名的方法。这些方法称为动态分配方法,因为直到运行才可确定LabVIEW调用的是哪一个VI。动态分配方法和多态VI类似。多态VI根据连入数据的类型来确定调用哪一个VI;动态分配方法在运行时根据输入接线端到达的数据确定调用类层次结构中的哪一个VI。

通过设置成员VI的连线板,成员VI既可指派为静态,也可指派为动态。若连线板上包含一个动态分配的输入接线端,则该成员VI是动态分配方法的一部分。如连线板上没有动态分配输入接线端,则该成员VI定义了一个静态分配方法。

一个LabVIEW类继承另一个LabVIEW类时,子类将继承父类中定义的所有“公共”和“保护”型的方法。通过在子类中创建和父类成员VI相同名称的成员VI,可定义该方法的子类实现。由于LabVIEW通过单个VI定义静态分配方法,子类成员VI的名称不可与祖先类的静态分配成员VI的名称相同。

对一个方法可定义多个动态VI,可在继承层次结构中的每一层对该方法定义一个动态分配VI。如动态分配成员VI在父类中定义,且也在子类中定义,则子类的执行将覆盖或扩展父类的执行。

如不定义父类VI的执行,父VI就仅仅是所有覆盖VI必须匹配的连线板和VI属性。每个子类必须提供一个类似的覆盖VI。要确保LabVIEW强制执行该要求,可在父类中标示VI为子类必须覆盖的VI。

总结

本篇文章主要介绍了LVOOP的一些基本概念,下一篇文章将以实例讲解如何编写LVOOP应用程序。

相关推荐

wordpress集团公司网站模板:XSgr

小兽wordpress推出一款高端集团公司主题,打造高品质官网。高端是一种态度和坚持,因为我坚信贴合产品及品牌理念的高端深度定制才能最大化地呈现企业的务实严谨与产品的专业品质相比,某种程度上讲–...

宝塔搭建WordPress跨境电商外贸商城模板汉化woodmart7.5.1源码

大家好啊,欢迎来到web测评。本期给大家带来一套php开发的WoodmartV7.5.1汉化主题|跨境电商|外贸商城|产品展示网站模板WordPress主题,是wordpress开发的。上次是谁要的系...

Wordpress建站设计技巧:用好Wordpress自带样板功能

作者:悦然wordpress建站(悦然建站)...

微软推出Azure平台WordPress模板:分分钟搭建博客

IT之家讯微软Azure云服务平台可以托管各种各样的Web服务,从企业应用后端服务到视频托管服务等等。WordPress是目前最为流行的博客平台,驱动着全球1/4的互联网网站。不过用户想要在Azur...

wordpress公司展示型通用模板:XShw

主题介绍xshw公司模板是一款现代化风格、通用型公司展示的Wordpress公司建站模板,采用经典的颜色搭配、精致的模块布局、完善的列表模板、响应式自适应技术以及配置的大幅全屏轮播图、公司简介、业务介...

WP模板开发中,怎样给wordpress网站的文章,添加点赞功能?

我们在网上浏览某些网站的文章时,在文章的结尾处,都会有一个点赞的按钮,如果觉得文章内容非常不错,就可以点击这个“点赞”按钮,给这篇文章进行点赞一下。在wordpress网站的模板主题开发中,我们可不可...

免费的WordPress模板

免费的WordPress模板有很多种类,适用于不同类型的网站需求。以下是一些推荐的免费WordPress模板,它们各具特色,适合多种用途:...

东港边检站开展全面清理自制执勤执法证件表单专项工作

为进一步提高边检机关依法行政和服务管理水平,根据部局和总站统一部署,6月3日下午,东港边检站迅速开展全面清理自制执勤执法证件表单专项工作。一是统一思想,提高认识。该站于6月3日召开专题会议,传达部局视...

两款超级好用的二维码生成器软件,铁铁们快码住

今天分享两款超级好用的二维码生成器,个人认为衡量是否是好用的二维码生成器的主要有以下维度(仅从用户体验角度)...

扫码填表如何拍摄现场照片?表单添加图片的二维码制作方法

现在通过扫描二维码来登记信息的方式非常的常见,有很多的应用场景会使用这种方式来统计数据,比如问卷调查、用户反馈、巡检结果等类型。通过扫码填写信息后,制作者可以及时的获取对应的数据做出反馈。那么表单二维...

纯干货∣教你如何制作一份具有法律效应的“电子合同”

表单中使用电子合同时,不仅需要进行功能设置,还需要制作一份PDF格式的模板...

金山表单硬核功能“在线考试”上线

近日,金山文档针对教师用户群体上线“在线考试”考试功能。教育从业者可在金山文档内完成考试、练习测验、竞赛和作业布置。与此同时,该功能还具备自动批改计分、答案解析、成绩展示、信息收集等特色功能。充分适配...

报名小程序怎么制作?借助这个报名表单工具一键搞定

报名表单广泛应用于各类活动、课程、会议和招募等场景中,用于收集报名者的个人信息和参与意愿,方便组织者进行统计、管理和沟通。表单制作不需要写代码,学会借助线上报名表单工具就能一键搞定。...

货代人的表单制作方式,该升级了!

很多在货代行业工作的人可能会思考是否将销售岗位转为操作岗位,因为货代销售工作需要不断迎接业绩的挑战,每个月都要全力以赴,但绩效考核的结果并不总是确定的。...

为你的WordPress widget建立表单

通过之前的三部分教程我们已经创建了一个自己的WordPresswidget。今天我们将给大家介绍如何为你的widget创建表单,以至于WordPress可以及时的更新widget设置。为widget...