特别备注:这是我在2018年2月份到4月份在网易博客写的LabVIEW的面向对象系列博客文章,现在由于网易博客的关闭,现将其转移到B站,现在又把它迁移到知乎来。

面向对象技术在LabVIEW中适当的应用可以较好的提升程序的模块化和抽象性,降低不必要的依赖性。

该系列一共是9篇文章,本文是该系列的第一篇,当时由于种种原因也没有发齐,现在争取这里全部补齐,知乎的专栏功能非常适合相关主题的系列文章的归纳收集,从而方便大家集中主题参阅。

引言:在去年年底左右(2017年11月底),由于单位业务调整,自己工作性质和内容发生较大的改变,由原先的计量参数日常运行检定改为测试软件维护与开发,遂开始着手对以往前同事开发完成的LabVIEW旧代码(直流电源校准/检定自动测试序列)进行重新梳理与维护,在此过程中开始边实践、边摸索的开发学习方式,应用面向对象技术(Object-OrientedProgram)对旧代码进行了完全重新的改写。

由于前段时间日常忙于开发工作,周末时间又要承担中年油腻男的上有老、下有小的生活“重任”,难得在春节及前后期间有一段相对空闲的时间,可以将近日的开发心得(设计思想、开发过程等)总结记录一下,以便日后回顾复习,并秉着互联共享的精神分享给大家。

但是由于本人的工作内容为计量校准的测控行业,因此在实际代码开发实践时选用的案例为本行业的电学参数中的直流电源校准为样例,因此有其局限性,较为适合本行业或者是电子测试工程师们在碰到类似的代码开发情况下予以参考借鉴。

该系列的博文并不讲述任何基础的LabVIEW面向对象概念与技术(基础部分内容将另行撰文编写),初窥门径系列重点是经典的设计原则在重构旧有面向过程代码的应用,实际发布面向对象工程代码中的填坑经验,因此并不适宜LabVIEW初学者学习,过早涉猎会导致丧失对LVOOP学习的浓厚兴趣!

正文:图形化编程语言LabVIEW于2006年推出的20周年纪念版本8.2版本中,隆重推荐了面向对象编程范型即LabVIEWObject-OrienedProgram(以下简称LVOOP),为测量工程师们带来了更为强大的抽象编程方式。

LabVIEW2009版本提供的“DVRs(DataValueReferences)”功能更进一步促进了面向对象编程技术的进一步发展,使得对象结构传址(By-Reference)实现更为便捷,减少数据内存拷贝次数。

两家第三方公司瑞典AddQ的开源产品G社区里优秀资料进行对比学习与借鉴。

而这些内容的学习并吸收后应用就是解决面向对象开发的核心所在,从而弥补上了相关面向对象设计(OOD)知识缺失环节,特别是与硬件测控程序相关的开发程序,可以充分利用HAL和MAL概念对旧有代码进行循序渐进的改进演化式开发。

因此,要想完成一个基于面向对象技术的解决方案,除了要学习关键的面向对象技术基础知识点如封装、继承、多态等,更为重要的是关于面向对象的设计概念及设计原则的掌握,并且这些概念在不同的语言实践中(LabVIEW,C#,Ruby)都是相通的,这也是下一篇文章将主要讲解的问题。

参考文件

《LabVIEW2012帮助文件》,NationalInstrumentsCorporation,2012年。

《Object-OrientedDesignandProgramminginLabVIEWCourseOverview》,NationalInstrumentsCorporation,2012年。

参考网址: