LabVIEW比较LabVIEW类对象 LabVIEW接口
使用比较功能比较LabVIEW类对象。
如比较同一个类的两个对象,例如,卡车类的两个对象,LabVIEW将比较类层次结构中所有层次的数据,类似于LabVIEW比较由簇组成的簇。
如比较不同类的两个对象,例如,比较一个卡车类对象和一个潜水艇类对象,LabVIEW比较对象所有的共有祖先类数据。在该情况下,LabVIEW仅比较汽车类共有祖先类的数据。
比较两个不同类的对象时,如共有祖先类的所有数据都相同,LabVIEW基于下列标准对对象进行排序。
LabVIEW将父类排在子类之前。例如,如比较一个汽车类的对象和一个陆上车类的对象,LabVIEW将把汽车类对象放在前面,因为它是父类的一个对象。
LabVIEW将第一个相异的类按类名称的字母顺序排列。例如,如比较一个卡车类对象和一个潜水艇类对象,LabVIEW先比较作为公共祖先类的汽车类对象。如汽车类对象的数据相同,LabVIEW将把卡车类对象排在前面,因为第一个相异的类:陆上车(Land Vehicle)和水上车(Water Vehicle),按其名称首字母排序,陆上车在水上车之前。
LabVIEW接口
在LabVIEW中,接口可以被视作是不带有私有数据控件的类,但这种微小的差异使得接口在软件架构中可以实现与类完全不同的目的。具体而言即接口可支持多重继承形式。
接口声明了对象可以扮演的角色,而无需定义如何执行该角色。通过继承接口,类声明其对象实现该角色,然后该类负责指定行为的执行方式。当一个类继承了多个接口时,其对象可被传输至需要完成不同角色的多个软件模块中。
以下项目包括工具(Tool)类,以及几个不同工具的子类。该项目还包括杠杆(Lever)接口。可以看到Tool类有一个控件,该控件定义了该类中的数据,而Lever接口则没有控件,因为接口没有私有数据。用实心立方体表示一个类()。用立方体的面表示一个接口()。接口和类使用相同的文件扩展名 .lvclass。
下图显示了Tool类,House Key类和Lever接口之间的继承关系。Tool类和Lever接口均继承自LabVIEW对象。除了拥有自己的方法以及它们各自的父类的方法之外,撬具类(Prying Tool)和平头螺丝刀类(Flathead)还继承自杠杆接口(Lever),因为它们都使用了杠杆原理。继承了杠杆接口(Lever)的方法。由于杠杆(Lever)是接口而不是类,因此这种多重继承是合法的。除LabVIEW对象外,三个不相关的类(撬具、平头螺丝刀、房间钥匙)具有一个共同的祖先——杠杆。
命名接口的惯例
请使用下列规范为接口命名。接口的名称应具有一定的描述性。
使用形容词或副词描述对象在继承接口时具有的功能。例如,如果接口表示可测量电压的硬件,则将其命名为Can Measure Voltage.lvclass。继承该接口的任何类或接口都可以测量电压。
使用一个名词来描述从接口继承的类的类别。例如,如果接口代表杠杆工具类别,则将其命名为Lever.lvclass。
接口名称避免使用大写字母"I”开头。大多数文本编程语言通常使用前导大写字母"I”来命名接口,以区分接口与类。LabVIEW使用图形化的符号来区分接口与类。此外,LabVIEW开发环境的大多数部分有意地以相同的方式处理接口与类。方法的调用方通常不在乎底层类型是接口还是类。因此,接口名称中不使用"I”,可以将类转换为接口,将接口转换为类,而无需重构代码。
关于使用接口的范例,请参考下列项目:
labview\examples\Object-Oriented Programming\BasicInterfaces\Basic Interfaces.lvproj
labview\examples\Object-Oriented Programming\Actors andInterfaces\Actors and Interfaces.lvproj
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。