- 《面向对象概念演示》的设计过程
-
功能
该程序实现的基本功能:
-
有猫和狗两种动物;
-
可以对他们体检,对于猫,大于7岁为old,否则为young;对于狗大于2岁为old,否则为young;
-
会发出叫声,显示对应的图片;
-
继承关系
- 实现过程
-
创建项目,并命名为"Animal-1.lvproj":
-
右键单击"我的电脑",新建-类,新建一个类,并命名为"Animal-1.lvclass":
-
双击"Animal-1.ctl",打开并编辑Animal-1类的私有数据:
-
创建方法make sound.vi:创建类的方法时有2个选择,分别是"基于动态分配模板的VI"和"基于静态模板的VI"。基于动态分配模板的VI:在被继承时,可以改写同名VI,实现不同的行为,可以实现类的多态;基于静态模板的VI:只能被继承,不能被改写。
所有的动物都会发声,但是每种动物发出的声音不一样,所以在父类中定义一个虚函数"make sound.vi",选择"基于动态分配模板的VI",子类可以改写该方法,实现多态,其程序框图如下图所示:
-
创建方法,set property.vi:需要设置父类中的私有数据(age和类别),该方法不允许子类修改,所以采用"基于静态模板的VI",其程序框图如下图所示:
并将"age"和"类别"连到前面板的接线端口;
-
创建方法,body test.vi:该方法的功能是获取私有数据的值,并根据年龄判断结果是old还是young,采用"基于静态模板的VI"。"猫"分子如下图所示:
"狗"分支如下图所示:
并将age、类别、结果连到接线端。
-
在新建Cat和Dog类前,先建立2个文件夹"Cat-1"和"Dog-1"用于保存这2个类中的数据和方法;
-
新建猫类:新建一个类,命名为"Cat-1.lvclass";右键选择属性-继承-更改继承,选择"Animal-1"为其父类,"继承所选类":
该类中的数据全部继承于Animal-1类,没有私有数据;
新建Cat-1类的方法:make sound.vi,采用"基于静态模板的VI",用于模拟Cat发声:
新建Cat-1类的方法:set property-1.vi,采用"基于静态模板的VI",用于设置Cat-1类的属性。在程序框图中选择编程-簇、类和变体-调用父方法(只能这样调用父方法,否则不行。)程序框图如下:
修改后的前面板如下图所示:
-
用同样的方法创建狗类。其程序框图如下:
其前面板如下:
-
新建vi"Animal Test-1.vi"用于演示程序,前面板如下图所示:
程序框图如下图所示:
该程序采用生产者-消费者循环,生产者循环随机设置猫或者狗的属性,消费者循中的"body test.vi"调用父类中的方法;"make sound.vi"实现了多态,根据不同的对象,调用不同的方法。
源程序见这个链接:http://download.csdn.net/detail/lab_fans/9872285#