LabVIEW专栏八、类

devtools/2024/10/18 14:23:15/

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

一、类的概述

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

  • 在实际项目中,最主要是继承多态,要搞清楚这两者的概念和在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"

http://www.ppmy.cn/devtools/14191.html

相关文章

vue keepAlive的使用

一、了解keepAlive 1.1 Vue 中的 keep-alive 是什么? keep-alive 是 Vue.js 的一个内置组件,它用于缓存不活动的组件实例,而不是销毁它们。在 Vue 应用中,当组件被包含在 keep-alive 组件中时,该组件在切换时不会被销毁,而是被保存在一个内存中,这可以显著提升大型应用…

Linux权限敏感文件 | 误操作chmod -R 777 /*

一、【写在前面】 最近笔者跳槽,有一段时间没写博客,最近会把这个博客更新起来,一是作为本人的技术总结,二是分享问题。 初学者经常会认为只有更改了文件才会导致系统不正常,但在Linux中更改权限也会导致很多奇奇怪怪…

数据集的图例怎么生成

数据集有13个分类,每个分类都有颜色,怎么生成色块的图例。 import matplotlib.pyplot as plt import matplotlib.patches as mpatchess3dis_color [[255, 248, 220], [220, 220, 220], [139, 71, 38], [238, 197, 145], [70, 130, 180], [179, 238, 58…

Vue3的语法糖进行父子组件传值

父组件 // 对于父组件来说&#xff0c;跟Vue2的写法差不多 <template><children :selection"multipleSelection"></children> </template> <script setup lang"ts">// 定义变量 let multipleSelection: Array<object>…

SWCTF

easy_php 源码 <?php// flag is in flag.php highlight_file(__FILE__); ini_set(display_errors, 0); error_reporting(0);if (isset($_GET[myon1]) && isset($_GET[myon2]) && isset($_GET[myon3])) {$myon1 $_GET[myon1];$myon2 $_GET[myon2];$myon…

oracle 12c+ max_string_size参数

一个客户的数据库版本是19.3,在做数据库复制的时候,目标端报错了,查看了一下问题发现表的字段长度有不对,在12c以前我们都知道varchar的长度最大是4000,但是客户这里居然有32767: 把客户的建表语句弄出来,放到我的一个19c的测试环境进行测试: 发现报错了: 这里报错很明显了,是M…

《生成式AI导论》学习笔记

1.课程定位 2.什么是生成式人工智慧&#xff1f; 3. 今日的生成式人工智慧厉害在哪里&#xff1f; 4.训练不了人工智慧&#xff1f;那我训练自己 5.训练不了人工智慧&#xff1f;你可以训练你自己&#xff08;中&#xff09;——拆解问题使用工具 6.大语言模型修炼史——第一阶…

MySQL 表的约束

文章目录 空属性默认值列描述填充零主键自增长唯一键外键 约束的概念 MySQL 表的约束是指对表中数据的一种规则或限制&#xff0c;用于确保数据的完整性、一致性和有效性。这些约束规定了对表中列的值所允许的条件&#xff0c;以及对表之间关系的限制。 是数据类型本身就是一种…