与其他编程语言不同,LabVIEW 的类的对象是采用值传递的
LabVIEW程序开发一般流程是先设计和实现顶层VI(主界面)然后自上而下设计与编写LabVIEW程序。程序中除了少量最低层的基础程序模块外,大部分模块不具备通用性。
面向对象的编程方法将程序的功能模块进行封装,提高模块的通用性和安全性。
查看内存中的所有VI

当一个VI被载入内存时:
此VI所有的子VI都会被载入内存;
此VI所在的类中的所有VI都会被载入内存;
此VI所在的类的父类中的所有VI都会被载入内存;
以上三条可递归。
所以,在设计使用LvClass时应注意:
仅需要对一些VI封装的情况下,应使用lvlib(lvlib与lvclass相比,lvlib只封装方法,lvclass还可以封装对象的属性,即,模块用到的数据)
类中的VI需要是高内聚的(类中方法共同完成某一基本功能,不可再分割)
继承关系应尽量简单,如无必要,不用继承。LabVIEW不支持接口,不应创建仅当做接口使用的纯虚类。
尽量不嵌套调用类(在某个类的VI中调用其他类的VI)
某些类型选择是程序编译时做出的,不适合套用在多态特性上(多态是让程序根据输入对象的类型选择对应处理方法)
| 例子 | 适用性 | 原因 |
|---|---|---|
| 读写INI | 适用 | 数据(文件内容),方法有限(打开、读、 写、保存关闭),一般程序都会同时用的这四个方法 |
| 复杂仪器驱动程序 | 不适用 | 驱动程序功能过多,单一个应用程序能用到的有限 |
| 生成报告 | 适用 | 生成不同类型的报告时,可重用的代码很多,可以设计一个基类 |
| 可支持多种不同型号仪器的测试程序 | 不适用 | 测试程序发布给用户时,特定用户的硬件设备是固定的,对仪器的选择应是程序发布时决定好的,而不是等到程序每次运行起来后判断的 |
**如果xml中的内容属于某个lvclass类型的数据,则将数据转换为对应lvclass的对象时,那个lvclass一定要已经被加载进内存,**否则将报错。
给子类对象设置一些数据,然后把它当做父类的数据,平化成xml并保存

重启labview,做一个程序把xml数据转换为子类的数据。
或者是,在证运行时子类类型已经被加载至内存的情况下,将xml数据直接转换为父类类型(当子类被载入内存时,它的父类也将被载入内存,但是父类被载入内存时,不会将自己的子类也载入)

