• LabVIEW专栏八、类


    该章目的是可以开发仪器类。

    一、类的概述

    一般来说类有三大特性,封装继承多态

    • 在实际项目中,最主要是继承多态,要搞清楚这两者的概念和在LabVIEW中是怎样应用的。
    • 在LabVIEW中,面向对象编程用到的就是LabVIEW的类,后缀是.lvclass。

    以下以设备类的层级来说明,假设现在有三个类,分别是
    ①device:设备类
    ②serial_device:串口设备类
    ③network_device:网口设备类
    串口设备类和网口设备类继承设备类,那么设备类是它们两个的父类,相对来说,它们两个是设备类的子类。

    二、类的创建

    ①在创建了项目之后,就可以在项目中创建类:右键"我的电脑"→新建"类"在这里插入图片描述
    ②此处新建一个device类,默认指定LabVIEW对象为父类
    在这里插入图片描述
    ③点击确定后,完成创建
    在这里插入图片描述

    三、继承

    类的继承表现为子类继承父类相关的数据成员成员方法
    父类比较抽象,用于给子类提供成员方法,供子类实现。
    子类在父类的基础下,进行扩展,添加新的属性和方法,子类的功能必定比父类更丰富,更具有特殊性。
    比如说一个通用的设备,作为设备的父类(以下称为设备类),一般会有四个方法,分别是连接,读,写,断开,在LabVIEW中称之为"动态方法"
    网口设备类继承这个设备类,可以具体实现网口的连接,读,写,断开,LabVIEW中称之为"重写"
    测试仪器类继承网口设备类,需要实现读取测试仪数据这个VI,这个就是子类独有的方法,这个方法不需要这个类重写的,在LabVIEW中称之为"静态方法"。
    子类可以重写父类的"动态方法"和使用父类的"静态方法",也可以使用父类的"数据成员"。

    1.1、静态方法

    静态方法可供子类直接调用
    创建静态方法的步骤是:
    右键对应的类,此处是device.class→新建→点击"基于静态分配模板的VI"
    在这里插入图片描述
    此处新建一个静态方法为"报警.vi"
    程序框图如下:
    在这里插入图片描述

    1.2、动态方法

    动态方法可以供子类重写,设备一般会有运行,这个每个子类的实现都不同。
    创建动态方法的步骤是:
    ①右键对应的类,此处是device.class→新建→点击"基于动态分配模板的VI"在这里插入图片描述
    ②名称改为"运行"
    在这里插入图片描述

    1.4、新建子类

    1.4.1、新建时继承

    新建一个串口设备类,名称为"serial_device.vi",指定继承父类"device"
    在这里插入图片描述

    1.4.2、设置继承

    如果在新建一个类后,想重新设置继承关系,可以通过以下步骤:
    ①新建一个网口设备类"network_device",默认继承父类LabVIEW对象。
    在这里插入图片描述
    ②右键"network_device"→点击"属性",弹窗
    在这里插入图片描述
    ③选中"继承"→点击"修改父类"
    在这里插入图片描述
    ④选中"device"→点击"继承所选类",则重新制定"device"为"network_device"的父类
    在这里插入图片描述

    1.4.3、子类调用父类的静态方法

    新建"test.vi"
    在这里插入图片描述
    程序框图如下:
    在这里插入图片描述
    这里体现了子类可以直接使用父类的方法。
    这里虽然调用的是"静态方法",但是实际无论是父类的"静态方法"还是"动态方法"都可以供子类调用

    四、多态

    多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。
    重写的VI体现了类的多态。

    4.1、子类重写父类动态方法

    子类可以使用父类的静态VI和动态VI。
    不可以再新建一个与父类静态VI同名的VI,意思就是不能重写父类的静态VI。
    可以重写父类的动态VI。
    这里重写"运行.vi",以"serial_device"为例。
    ①右键"serial_device"→点击"新建"→点击"用于重写的VI"
    在这里插入图片描述
    ②弹窗,就会显示所有能重写的VI,也就是所有父类的动态方法
    在这里插入图片描述
    ③新建"运行.vi"后,程序框图修改为:
    在这里插入图片描述
    ④同样步骤,“network_device"重写"运行.vi”,程序框图如下:
    在这里插入图片描述
    至此,“serial_device"和"network_device"类都有了"运行.vi”

    ⑤新建一个"test1.vi"
    在这里插入图片描述
    程序框图如下:
    在这里插入图片描述
    运行后,两次弹窗,第一次是"串口运行",第二次是"网口运行":

    在这里插入图片描述
    在这里插入图片描述
    多态体现在:

    • "serial_device"和"network_device"可以组成数组,这个数组是"device"数组
    • “device"数组进入for循环后,第一次执行的是"serial_device"的"运行.vi”,第二次执行的是"network_device"的"运行.vi"
  • 相关阅读:
    云呐-人工智能设备运维是干什么的?自动化设备运维
    【LeetCode 算法专题突破】双指针(⭐)
    报错Error in nextTick: “TypeError: undefined is not iterable
    秒杀系统设计(分布式微服务)
    Error:java: 错误: 不支持发行版本 5
    halcon 感兴趣区域
    区块链与农业溯源上的利与弊
    【学习笔记03】node.js搭建一个简易的服务器
    Linux考试复习整理
    仓库物资管理系统(C#+SQL)
  • 原文地址:https://blog.csdn.net/weixin_41303851/article/details/137779887