- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
labview 中的类
LabVIEW 中的类
一、创建一个空的类
??? 在 LabVIEW 工程窗口里,鼠标右键菜单的新建栏中有一项,是创建类。类的结构和 LabVIEW 工程库是比较相近的:类的名字也作为名字空间;也可以为类中的 VI 设置访问权限等。类在硬盘上被保存在一个 .lvclass 文件中。这个文件其实是一个XML格式的文本文件,它的格式与 .lvlib 类似。??? 类是一个抽象的定义,符合这个类的实体,叫做类的实例。这有点类似数据类型和数据之间的关系。
??? 我们先来创建一个名叫 Animal 的类吧,用它来描述一些动物的属性和行为。现实中,通过特定的属性和方法(行为)来定义某一类事物;与之对应的 LabVIEW 中的概念是类的数据和VI。??? 动物类是一个类,符合这个概念的任何一个实体比如某一只小猫,一条小狗就是这个类的实例。程序中处理的都是这些实例。
图1:创建类的菜单
二、类的属性
??? 在工程窗口中可以看到,每个类包含数个 VI 和一个与类同名的 .ctl 项。尽管它的面板与设置方法与用户自定义控件类似,但它实际上并不是一个独立的用户自定义控件。此外,类的.ctl项必须是一个 Cluster。Cluster 中的元素就是这个类所使用的数据,相当于 C 语言的类中的变量。通过改变 Cluster 中的元素的默认值,你可以在这里设置类的属性的初始值。
??? 与 C 语言不同之处是,LabVIEW 类中数据只能是私有的。??? 公有数据是最容易被滥用的。为了自己使用方便,非常专业的编程人员常常倾向于把类中的数据都设置为公有,可以方便随时随地访问它。但这样一来就完全破坏了类的封装性,不加控制地访问类中的数据增加了模块间的耦合度,使得可读性和可维护性都大大降低。??? 通过类的方法访问类中数据就安全得多。比如我们可以在方法中添加对写入数据的合法性检查,在数据越界时报错等。??? 这样也有利于调试。比如我们需要跟踪某个类的数据的变化,如果数据是公有的,程序运行时就无办法预知它是在那里被改变的。若数据是私有的,我们就可以确定它只在类中设置它的 VI 中被改变。只要在这个VI上加个断点,就可以在调试时,令程序在数据被改变之前暂停运行。??? LabVIEW 相当一部分用户是非计算机专业的人员。对于他们来说,概念越简单越好。类的数据强制为私有类型,可以避免他们接触更多的程序设计概念,而直接引导他们使用最佳的程序设计方法。
??? 这样的设计方法唯一不足之处是:即便是的确需要被类之外的 VI 直接访问的数据,也必须给他们创建一个公用的方法,通过这个方法间接访问这个数据。幸好,类的右键菜单中有一项专门为数据创建访问 VI 的选项(VI for Data Member Access...)。通过它,可以便捷地创建出数据访问 VI 以供使用。
??? 现在,回到我的 Animal 类:它有两个属性,分别是动物的年龄和颜色。于是我在 Cluster 中放了两个分别表示年龄和颜色的控件。
? 图2:添加类的数据(类的属性)
三、类的方法
??? 鼠标右键点击在类上,就可以为类创建 VI,也就是类的方法。
?图3:创建新方法
??? 在上图新建这一栏下可以看到很多条目:??? VI,就是指创建一个普通的 VI。??? Virtual Folder,是文件夹。如果类中的方法很多,可以把它们归类到不同的文件夹中,便于管理。??? VI from Dynamic Dispatch Template,所创建出来的VI类似于 C 语言中的虚函数。应用程序再调用这个 VI 的时候,可能实际执行的是某个子类中的同名方法。??? VI from Static Dispatch Template,所创建的 VI 比普通 VI 多了类方法最常用的代码框架。程序员可以省去一些自己画错误处理选择框的时间。它与 VI from Dynamic Dispatch Template 唯一的区别在于:类输入输出接线端子(这个例子中是“Animal in/out”)不是动态调度的。(参见图4:动态调度的接线端子)??? VI for Data Member Access...,因为类的数据全部是私有的,所以需要借助公有VI来访问他们。这个选项可以帮你快速建立读写类中数据的VI。??? VI for Override...,这个选项是专门给子类用的。用来创建覆盖父类方法的VI。??? Control,创建用户自定义控件,这一条与类的概念不相关,仅为了方便用户。
图4:动态调度的接线端子
??? 在类的类的属性面板中可以设置类中每个 VI 是公有的还是私有的。这与工程库中 VI 的设置是类似的。
??? 可能你已经发现了,与
文档评论(0)