一 类的属性
类中包含与类同名的.ctl项,其内容为簇,簇中元素即类的属性。
类的数据是私有的,子类无法继承父类的数据。如果子类想要使用父类中的数据,需要通过父类提供的方法间接调用。
给父类和子类添加同名数据,数据的初始值即控件默认值。
通过新建-用于数据成员访问的VI 创建用于读写数据的VI。
创建动态访问器,允许父类与子类中的数据成员访问VI重名;静态访问器则不允许重名。
选择通过属性节点访问可以一次读写多个属性。
尽量不要把数据成员访问VI直接给用户使用。
二 举个例子
假设这里有个瓷器厂,他只做茶杯和茶壶。模拟以下属性和方法:
共有属性/方法 | 描述 |
---|---|
编号(属性) | 每个瓷器都有一个唯一的编号 |
成本价(属性) | 进货价格 |
返回售价(方法) | 设成本、利率、税费已知,售价=成本价*(利率+1)*(税率+1) |
制造过程(方法) | 茶杯和茶壶制造过程(简单文字描述) |
特定属性/方法 | 描述 |
---|---|
制作茶碟 | |
安装壶嘴 |
设计
根据需求做出如下设计
三个类:瓷器、继承于瓷器类的茶杯类和茶壶类。
瓷器类的两个数据:编号、成本价,三个方法:返回售价、制造过程、初始化。
方法返回售价的逻辑在所有类中都是相同的,只需要在父类中实现并用子类调用。
方法制造过程的实现在两个子类中并不相同,需要分别在两个子类中实现。
方法初始化用于设置编号和成本价。
茶杯类的四个方法:初始化、返回售价、制造过程、制作茶碟。
茶壶类的四个方法:初始化、返回售价、制造过程、安装壶嘴。
常量两个:利率、税率。
创建类
通过类图创建类。
瓷器类中的初始化方法。
瓷器类的返回售价方法。
瓷器类的制作过程方法。
这个方法是要被子类重写的,所以是基于动态分配模板的VI。默认方法这里是给它返回了一个当前正在做的瓷器的编号。
茶杯类中的制作过程方法。调用父类同名方法,得到编号,然后加个茶杯的字符串,证明这个VI有被调用过。
茶壶类中的制作过程方法与之类似。
茶杯类的特有方法制作茶碟。这里是让它直接输出个字符串。茶壶类的安装壶嘴方法与之类似。
测试