【第一章】LabVIEW中的OOP——封装

 

在线试读↓什么是封装?封装是将数据和方法相结合,组成一个类,并设置数据的访问权限。它隐藏了对象是如何工作的,...



在线试读↓



什么是封装?

封装是将数据和方法相结合,组成一个类,并设置数据的访问权限。它隐藏了对象是如何工作的,并将关注点转移到什么是对象,对象能做什么。

在LabVIEW中,LabVIEW类的数据都是私有的,只有LabVIEW类中的成员VI才有访问LabVIEW类的数据权限。任何LabVIEW类中的成员VI以外的VI,在尝试捆绑和解除捆绑LabVIEW类的数据时,都会导致运行按钮的断裂。

通过访问器来控制访问LabVIEW类的数据权限,有如下好处:

  • 随着时间推移,应用程序在维护时,只要被外部VI调用的访问器保持不变,对象可以被任意修改;
  • 在任何数据需要做出修改时,封装确保了单一的瓶颈,并为大型系统的调试和维护提供了极大的帮助;
如果编程语言不支持,封装是很难被强制执行的。开发人员往往更倾向于只想着如何直接获取想要的数据,而不去想访问器方法这类烦心事。没有编程语言的支持,开发人员必须有一个非常有纪律的团队,以确保实现封装。

LabVIEW中的访问范围

和其它编程语言一样,LabVIEW通过设置LabVIEW类中各个项的访问范围来支持封装。根据开发人员的设置,只有某些指定的VI才可以将成员VI作为子程序(SubVI)使用。

开发人员可以设置成员VI的访问范围,从而来控制用户对成员VI的访问。通过以下步骤完成对成员VI的访问范围设置:

  1. 在项目浏览器中,右键LabVIEW类图标,从右键菜单中选择属性,弹出LabVIEW类属性对话框;
  2. 在LabVIEW类属性对话框中,如下图所示,从类别(category)中选择项设置(ItemSettings);
  3. 在项设置页面中,通过在内容(Contents)中选中一个项目来设置其访问范围;
  4. 在设置访问范围时,有以下选项供选择:
  • 公共(Public)——所有VI都可以访问的成员VI;
  • 库内(Community)——只有当前LabVIEW类本身、友元类及友元库中的VI可以访问的成员VI。库内成员VI在项目浏览器中有深蓝色钥匙覆盖图。
  • 保护(Protected)——只有当前LabVIEW类本身及其子类可以访问的成员VI。保护成员VI在项目浏览器中有深黄色钥匙覆盖图。
  • 私有(Private)——只有当前LabVIEW类本身可以访问的成员VI。私有成员VI在项目浏览器中有红色的钥匙覆盖图。
LabVIEW使用了行业标准的范围术语,如公共、保护和私有。但友元这个概念是在LabVIEW2009时加入的,在大部分编程语言中没有类似的概念。

公共方法可以被任何VI访问。LabVIEW类中的VI默认使用公共访问范围。它们为外部VI或其它类提供了LabVIEW类私有数据的接口。

私有方法只可以被与它在同一个LabVIEW类中的成员VI访问。当有一些内部功能不应该被外部代码访问时,开发人员需要设置私有访问范围。

私有访问器方法可以限制LabVIEW类的数据接入数量。在程序执行过程中,当LabVIEW类的数据存在问题时,开发人员可以很明确地知道从哪里开始寻找,以确定问题的根源。

私有方法有如下好处:

  • 当开发人员需要增加新功能时,私有方法可以用来创建数据的访问限制。例如,在设置LabVIEW类的数据前,添加一些范围检查。当新的数据无法通过范围检查时,它是无法被设置到LabVIEW类的数据中的。对于现有的代码来讲,这种访问限制是能为其增加新的功能的关键之处。
  • 因为当前LabVIEW类本身以外的代码是无法直接调用其私有方法的,所以私有方法在被删除、重写或是修改参数时,是不会影响当前LabVIEW类本身以外的代码的。
保护方法只可以被与它在同一个LabVIEW类中的成员VI及其子类的成员VI访问。这意味着保护方法与私有方法一样,都不能被非当前LabVIEW类本身的成员VI访问。但与私有方法不同的是私有方法不能被子类继承,而保护方法可以被子类继承。

库内方法只可以被与它在同一个LabVIEW类中的成员VI及其友元VI访问。动态分配(DynamicDispatch)VI不能被设置成库内访问。

通过以下步骤添加友元VI:

  1. 在项目浏览器中,右键LabVIEW类图标,从右键菜单中选择属性,弹出LabVIEW类属性对话框;
  2. 在LabVIEW类属性对话框中,如下图所示,从类别中选择友元(Friends);
  3. 单击添加友元(Add Friend),选择要添加的VI或LabVIEW类;
  4. 将所需的友元VI和LabVIEW类添加完毕后,单击确定关闭LabVIEW类属性对话框。


下图总结了LabVIEW类中成员VI的访问范围:



本人发行的包括但不限于产品或服务的全部内容及群共享中的的材料拥有版权等知识产权,受法律保护。

未经本人书面许可,任何单位及个人不得以任何方式或理由对上述产品、服务、信息、材料的任何部分进行使用、复制、修改、抄录、传播或与其它产品捆绑使用、销售。

凡侵犯本人版权等知识产权的,本人必依法追究其法律责任。

特此郑重法律声明!

点击阅读原文加入收费社区,访问更多精彩内容!


    关注 漫谈LabVIEW面向对象设计


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册