LabVIEW基于对象-类的方法

本文详细介绍了面向对象编程中基于动态和静态分配模板的虚拟仪器(VI)的区别及其在继承和方法重写中的应用。动态模板允许子类重写父类方法,而静态模板则禁止此行为。文中通过实例展示了如何创建和调用这些模板的VI,并解释了在不同场景下如何选择使用。此外,还讨论了调用父类方法的技巧以及类型定义在自定义数据类型中的作用。
摘要由CSDN通过智能技术生成

一 类的方法

新建一个类,鼠标在类上单击,为类创建方法。

VI:创建一普通的方法VI
虚拟文件夹:在类中方法较多时,可以将它们归类到不同文件夹中
属性定义文件夹:专用于保存数据读写VI的文件夹
基于动态分配模板的VI:类中方法可被子类中相同方法重写,其输入输出接线端是动态分配的
基于静态分配模板的VI:类中方法不可被子类重写
用于数据成员访问的VI:用于快速建立读写类中数据的VI。依旧是基于动态或静态分配模板的VI,不同处在于这个在程序框图上有数据读写的代码
用于重写的VI:专用于子类,以覆盖父类的方法。创建的是基于动态分配模板的VI,在程序框图上添加了调用父类同名方法的代码
类型定义:创建用户自定义控件,自定义一些在模块里可能用到的数据类型

二 基于动态/静态分配模板的VI

基于动态分配模板的VI与基于静态分配模板的VI区别:动态分配的VI输入输出接线端的动态分配的。
在这里插入图片描述
在这里插入图片描述

2.1

当类中存在基于静态分配模板的VI,其子孙类中不能有同名方法。
在父类中创建一个基于静态分配模板的VI。
这里是创建了一个叫static的VI,功能是返回一个字符串。
在这里插入图片描述尝试在子类中创建一个同名的基于静态分配模板的VI。
可以发现新建的VI不可运行。
在这里插入图片描述为父类和子类分别创建基于动态分配模板的同名VI。
两VI都可以正常运行。

在这里插入图片描述
在这里插入图片描述

2.2

做一个简单的测试程序,

其中橘色的是父类,黄色的是子类。
static.vi是静态分配模板的VI,被调用的永远是父类的static,返回值永远是“parent”
父类的实例调用PD返回“parent dynamic”,子类的实例调用SD返回“son dynamic”
把子类的对象的数据转换为父类的数据类型再调用dynamic.vi,这里的实例是由子类生成的,无论在程序中使用哪个祖先类的数据类型表示它,它始终是个子类实例。所以程序调用它的dynamic.vi,运行的还是子类中的dynamic.vi。只有在子类中没有实现某个基于动态分配模板的VI时,程序才调用它父类中的同名VI。

标识
父类基于静态模板的VIPS
父类基于动态模板的VIPD
子类基于动态模板的VISD

在这里插入图片描述

2.3

修改父类中的static.vi
调用父类的方法dynamic.vi
在这里插入图片描述
创建测试程序,使用泛化成父类类型的子类调用这个static.vi
虽然子类中没有static.vi,确定被调用的是父类中的static.vi,但由于传入的实例属于子类,父类中的static.vi调用的依旧是子类中的dynamic.vi
一个基于动态分配模板的vi,即使在其他类的vi中被调用,运行的依旧是实例所属类中的方法
在这里插入图片描述

2.4

在子类调用父类中的同名方法时,需要通过编程-簇,类与变体-调用父类方法这个节点调用父类方法,直接将父类方法拖拽到程序框图是无效的。
在新建“用于重写的vi”时,系统会自动把这个节点加到新生成的程序框图。

在这里插入图片描述
此程序返回的是父类同名方法返回的数据
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斯金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值