LabVIEW专栏八、类

news2024/10/5 20:22:19

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

一、类的概述

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

红海云签约南都物业,助力物管行业人力资源数智一体化

南都物业服务集团股份有限公司(以下简称“南都物业”)是中国第一代、浙江省第一批注册成立的独立第三方物业服务企业,也是国内A股主板市场物业行业第一股(股票简称:南都物业,股票代码:603506&am…

PS入门|用PS设计物品尺寸,需要注意的几个重要问题

注:仅学习使用 【PS24】2024版本更新的内容比较多,对电脑配置的要求也是比较高的。建议配置:第十代i5或以上CPU。 如果是第十代i3或以下的CPU,建议安装PS2021或者以下版本。 ---这是一条不正经的分割线--- 讲了那么久的PS教程…

设计模式-构建者模式

作者持续关注 WPS二次开发专题系列,持续为大家带来更多有价值的WPS二次开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 目录 定义 特点 使用场景 优缺点 (1) 优点 …

重看Spring聚焦Environment分析

目录 一、理解Environment的设计 (一)整体理解 (二)聚焦Profiles分析 (三)聚焦Properties分析 二、Environment类图结构分析 三、PropertyResolver源码分析 (一)源码展示说明…

广东理工学院携手泰迪智能科技成功部署人工智能实验室

广东理工学院是经国家教育部批准设立的全日制普通本科院校,入选全国应用型人才培养工程培养基地、国家级众创空间试点单位、广东省高校电子商务人才孵化基地。开设34个本科专业,涵盖工学、经济学、管理学、文学、艺术学、教育学等6大学科门类&#xff0c…

Power BI 如何创建页面导航器?(添加目录按钮/切换页面按钮)

Power BI 中页导航是什么? 在Power BI中,页导航(Page Navigation)是指在报告中创建多个页面(页),然后允许用户在这些页面之间进行导航的功能。 如下图所示,页导航的选项和报告中的…

李飞飞团队《2024 年人工智能指数报告》AI十大趋势:中国AI专利数全球第一

《2024 年人工智能指数报告》 当地时间4月15日,斯坦福大学“以人为本”人工智能研究院(Human Centered Artificial Intelligence,简称HAI)发布了第七个年度AI Index报告,这是关于AI行业现状的最全面的报告之一。 报告…

聊聊go语言中的GMP模型

写在文章开头 我们都知道go语言通过轻量级线程协程解决并发问题,按照go语言的思想这些协程运行完成后即焚,那么go语言如何保证并发线程有序获取协程呢? 带着这个问题我们从go语言底层的源码来阐述这个问题: Hi,我是 s…

K-means聚类算法:如何在杂乱无章的数据中找出规律?

什么是K-means聚类算法? 在编程的世界里,K-means聚类算法就像一位无私的指路人,它不需要我们给出明确的指示,只需要我们提供数据,它就能帮助我们找到数据的归属,找到数据的“家”。 K-means聚类算法的名字…

经典的目标检测算法有哪些?

一、经典的目标检测算法有哪些? 目标检测算法根据其处理流程可以分为两大类:One-Stage(单阶段)算法和Two-Stage(两阶段)算法。以下是一些经典的目标检测算法: 单阶段算法: YOLO (You Only Loo…

【御控工业物联网】JAVA JSON结构转换、JSON结构重构、JSON结构互换(5):对象To对象——转换映射方式

御控官网:https://www.yu-con.com/ 文章目录 御控官网:[https://www.yu-con.com/](https://www.yu-con.com/)一、JSON结构转换是什么?二、术语解释三、案例之《JSON对象 To JSON对象》四、代码实现五、在线转换工具六、技术资料 一、JSON结构…

Linux中的vi与vim:编辑器的王者之争与深度探索

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、Linux的起源与发展 2、vi与vim的历史与发展 …

【C++】手撕list(list的模拟实现)

目录 01.节点 02.迭代器 迭代器运算符重载 03.list类 (1)构造与析构 (2)迭代器相关 (3)容量相关 (4)访问操作 (5)插入删除 我们在学习数据结构的时候…

Laravel 6 - 第十一章 中间件

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

Unity 如何制作和发布你的 Package

一、制作你的第一个 Package Unity Package 不做过多赘述,像 URP 本质上也是一个 Package,在 Unity 中可以通过菜单栏 → Window → Package manager 来管理你当前的所有 Package 本篇文章主要介绍:如何制作并发布属于你的 Package 1.1 Pac…

将本地项目推送至gitlab仓库

1. gitlab上新建一个空白项目 gitlab上点击new project按钮,新建一个项目 新建空白项目 项目名称与本地新建项目名称相同,其余根据具体需要选择 2. 初始化本地仓库并commit项目 进入本地项目根目录下,右击 git bash here打开命令窗口 初始化…

8.4.2 实验2:配置Trunk

1、实验目的 通过本实验可以掌握: Native VLAN 的含义和配置。IEEE802.1q 封装Trunk 配置和调试方法。 2、实验拓扑 配置 Trunk 的实验拓扑如下图所示。 图8-6 配置 Trunk 的实验拓扑 3、实验步骤 3.1 在交换机S1、S2上创建 VLAN 并把端口划分到相应的VLAN中 …

ASP.NET教务管理平台-权限及公共模块设计与开发

摘 要 随着教育改革的不断深化,高等院校的建设与发展对国民整体素质的提高起着越来越重要的作用,建立一套能够适应这些改变的行政管理方案也就显得尤为重要。对于教务处来说,将信息技术用于校务管理中便是迫切的要求。 教务系统中的用户…

ROS 2边学边练(33)-- 写一个静态广播(C++)

前言 通过这一篇我们将了解并学习到如何广播静态坐标变换到tf2(由tf2来转换这些坐标系)。 发布静态变换对于定义机器人底座与其传感器或非移动部件之间的关系非常有用。例如,在以激光扫描仪中心的坐标系中推理激光扫描测量数据是最简单的。 这…

Ventus(承影):基于RISC V的开源GPGPU

Ventus(承影):基于RVV的开源GPGPU 清华大学集成电路学院dsp-lab的承影RVV GPGPU设计文档。 整体目标 提供一个开源的基于RVV的GPGPU实现方案,并给出软件映射方案、指令集(支持的指令及特性、添加的自定义指令&#xf…