第6章LabVIEW面向对象程序设计课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第6章LabVIEW面向对象程序设计课件.ppt》由会员分享,可在线阅读,更多相关《第6章LabVIEW面向对象程序设计课件.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LabVIEW面向对象程序设计Intelligent Electronics InstituteHuazhong University of Science&TechnologyHttp:/2目录面向对象LabVIEW与面向对象程序设计LabVIEW对象基本实现LabVIEW对象高级技巧实例介绍提示与建议习题Http:/36.1面向对象n对象与类的概念对象与类的概念对象是系统中用来描述客观事物的一个实体,是构成系统的基本单位,由属性和对这些属性进行的操作等构成;类是对象的抽象及描述,是具有共同属性和操作的多个对象的统一描述体,类也是对象,是一种集合对象;在类的描述中,每个类要有一个名字,要表示
2、一组对象的共同特征,还必须给出一个生成对象的实例的具体方法;类中的每个对象都是该类的对象实例,系统运行时通过类定义属性初始化可以生成该类的对象实例。Http:/6.1面向对象n属性与方法的概念属性与方法的概念对象是属性及方法的封装体;对象的属性是指描述对象的数据,这些数据可以是系统或用户定义的数据类型,也可以是一个对象的数据类型;对象的方法是指定义在对象属性上的一组操作的集合;方法是为响应消息而完成的算法,表示对象内部实现的细节,对象方法集合体现了对象的行为能力;对象的属性和方法是对象定义的组成要素,它们统称为对象的特征。4Http:/6.1面向对象n面向对象中的三要素面向对象中的三要素:在面
3、向对象的程序设计中,封装封装就是把相关的数据和代码结合成一个有机的整体,形成数据和操作代码的封装体,对外只提供一个可以控制的接口,内部大部分的实现细节对外隐蔽,达到对数据访问权的合理控制;在面向对象程序设计中,继承继承表达的是类之间的关系,这种关系使得一个类可以继承另一类的属性和方法,从而提供了通过现有的类创建新类的方法,也提高了软件复用的程度;多态多态是面向对象程序设计的重要特性之一,是指不同的对象收到相同的消息时产生不同的操作行为,或者说同一个消息可以根据发送消息的对象的不同而采用多种不同的操作行为。5封装继承多态Http:/6.2LabVIEW与面向对象程序设计nLabVIEW引入面向对
4、象编程时的术语术语LabVIEW依然使用家族关系术语家族关系术语:父与子、兄弟与堂兄弟等,这些都是用户已经熟悉的术语,当提到某个类的父类时,都可以理解这两个类之间的关系;LabVIEW类成员的限定性术语限定性术语:依然采用“私有的”、“共有的”和“受保护的”等词汇。6Http:/6.2LabVIEW与面向对象程序设计n继承继承LabVIEW在实现继承特性时坚持这样一条原则:LabVIEW用户能够实现类的继承,可以选择一个已有类作为父类,创建一个子类,并且可以覆盖父类中的方法;LabVIEW提供了(Object)类,作为所有LabVIEW类的祖先;LabVIEW目前只支持公共继承,而不支持私有继
5、承和多继承。7Http:/6.2LabVIEW与面向对象程序设计n封装封装LabVIEW实现了类的封装,但对封装特征进行了选择;LabVIEW类只包含对私有数据的支持,不提供公共数据和受保护的数据两种属性;LabVIEW类中的方法,不仅可以是私有的,还可以是公共的或受保护的。8Http:/6.2LabVIEW与面向对象程序设计n多态多态多态性表现有两种两种,即编译时的多态性编译时的多态性和运行时的多态性运行时的多态性。编译时的多态性是用函数的重载来实现的,运行时的多态性是用虚函数来实现的,而这两种方式在LabVIEW的类中都没有实现。首先,LabVIEW类不支持重载,但这种多态性的思想在Lab
6、VIEW的早期版本中就一直存在并发挥着重要作用,主要表现为多态的函数、VI和单位;其次,对于虚函数而言,“虚拟”和“虚拟分配”的概念在LabVIEW中也面临一些问题,LabVIEW面向对象编程选择了“动态”和“动态分配”来代替这两个术语。9Http:/6.3LabVIEW对象基本实现n创建类创建类通过菜单“FileNewClass”或者在项目浏览器的右键快捷菜单中选择“NewClass”项,都可以创建LabVIEW类;创建类时,LabVIEW将创建一个新的类库文件(.lvclass),该文件可以记录类的私有数据控件(Private Data Control)和所有被创建的成员VI的信息,包括V
7、I列表及VI的属性等;类的数据被定义在私有数据控件中,私有数据控件是一个数据簇,与类库文件是一一对应的,并保存在类库文件中,私有数据控件的名称以“.ctl”作为扩展名。10Http:/6.3LabVIEW对象基本实现n私有数据控件私有数据控件示例示例11类库文件中的私有数据控件Http:/6.3LabVIEW对象基本实现n编辑私有数据成员编辑私有数据成员在项目浏览器窗口双击类的私有数据控件,可以对类中的数据成员进行编辑,将需要的控件放置到该类的定义私有数据控件中,作为类私有数据簇中的成员。12私有数据成员Http:/6.3LabVIEW对象基本实现n设置继承设置继承在LabVIEW中,通过“继
8、承”可在现有类的基础上创建一个新类;当一个新类被设置为继承另一个LabVIEW类时,这个新类就可以使用它所继承的类中“公共”及“保护”型的成员VI;在LabVIEW中,所有的类都默认继承LabVIEW Object的基本类。13Http:/6.3LabVIEW对象基本实现n设置继承示例设置继承示例14默认继承关系Http:/6.3LabVIEW对象基本实现n改变类的继承关系改变类的继承关系在类名称上右击,进入属性设置对话框,选择“继承”(Inheritance),然后单击“更改继承”(Change Inheritance),可改变类的继承关系。15更改后的继承关系Http:/6.3LabVIE
9、W对象基本实现n创建方法创建方法在类名称上右击,选择需要创建VI的类型:普通成员VI、动态成员VI或重写VI(Override VI)。16Http:/6.3LabVIEW对象基本实现n新建静态成员新建静态成员VIVI新建静态成员VI后,会打开一个空面板的VI,用户可以根据应用需要添加程序代码;静态方法只有单个VI,在子类中无法创建与父类静态成员VI相同名称的成员VI。17Http:/6.3LabVIEW对象基本实现n新建动态成员新建动态成员VIVI新建动态成员VI后,会打开一个含有部分代码的VI,其中包括错误输入簇、错误输出簇、用于错误处理的条件结构,以及输入LabVIEW类和输出LabVI
10、EW类;动态成员VI主要出现在具有继承关系的LabVIEW类中,只有当子类需要继承并重写父类中的某些VI时,这些VI才有必要设置为动态成员VI。18“大四学生”类中获取成绩的程序框图Http:/6.3LabVIEW对象基本实现n创建重写成员创建重写成员VIVI重写成员VI是对祖先类中动态VI的重写,必须与祖先类中的同名成员VI具有相同的重入设置、首选执行设置、优先级设置、连线板接线端、连线板模式和访问范围;创建重写成员VI时,LabVIEW会自动调用父类方法的节点、动态输入和输出类接线端及其他匹配祖先类VI所需的接线端并放置在程序框图中;当选择创建时若不存在可重写的祖先类成员VI,LabVIE
11、W将禁用重写成员VI的选项。19Http:/6.3LabVIEW对象基本实现n右击“保研生”类,选择“新建”下拉列中的“用于重写的VI”,会出现一个提示框用于选择需要重写的动态VI。我们选择“大四学生”类下的“获取成绩.vi”,LabVIEW会自动生成一个“保研生”类下的“获取成绩.vi”。20“保研生”类中获取成绩的程序框图Http:/6.3LabVIEW对象基本实现n输入或输出接线端输入或输出接线端对于动态VI,右键单击连线板上的输入或输出接线端,会发现其连接为动态分配模式。21“保研生”类中获取成绩的输入端口Http:/6.3LabVIEW对象基本实现n动态分派程序动态分派程序在编写程序
12、时,动态成员VI在程序背面板上就像一般的子VI一样,不过当运行时,输入端口传递进来的数据就决定了调用哪个类中的成员VI。22Http:/6.3LabVIEW对象基本实现n访问范围设置访问范围设置LabVIEW类只包含私有成员数据,但可以为类的成员VI指定访问范围。成员VI的访问范围选项包含如下设置:a)公共(Public),任何VI都可以调用该成员VI;b)保护(Protected),仅该成员VI所在类及其子类中的VI可以调用该成员VI,在项目浏览器窗口中受保护的成员VI图标中有一个暗黄色的钥匙符号;c)私有(Private),仅该成员VI所在类中的VI可以调用该成员VI,在项目浏览器窗口中私
13、有型的成员VI图标中有一个红色的钥匙符号。23Http:/6.3LabVIEW对象基本实现n在类上右击,选择属性后可以设置一个在类上右击,选择属性后可以设置一个VIVI的访问范围的访问范围24Http:/6.3LabVIEW对象基本实现n使用类使用类在创建LabVIEW类的实例时,用户可直接将这个类的类库文件(.lvclass)作为控件或常量放置在相应程序的前面板或程序框图中;在LabVIEW类中,所有的私有数据被定义为一个簇,通过在成员VI的程序框图中调用函数来访问和操作这些数据;对LabVIEW类进行捆绑或解除捆绑时,节点上仅显示当前类私有数据的接线端,而不显示从父类继承的数据的接线端。2
14、5使用类获取大一成绩程序框图Http:/6.4LabVIEW对象高级技巧n构造函数与析构函数构造函数与析构函数在一般的面向对象程序设计语言中,对象在创建和销毁时会自动调用两个函数:构造函数和析构函数;构造函数的作用是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态,使对象具有自己的特征;析构函数则用来完成对象被删除前的一些清理工作,析构函数调用完成之后,对象将被销毁,相应的内存空间也被释放;在LabVIEW的面向对象编程中,构造和析构是隐含的,不需要用户编写或调用。26Http:/6.4LabVIEW对象高级技巧n内存分布内存分布在LabVIEW中,类的高效存储是一个挑战性的问
15、题。一个类的数据包括从父类继承来的数据簇和自身的私有一个类的数据包括从父类继承来的数据簇和自身的私有数据簇。数据簇。27Http:/6.4LabVIEW对象高级技巧在类实现时,在类实现时,LabVIEWLabVIEW需要为一个类分配数据空间需要为一个类分配数据空间28Http:/6.4LabVIEW对象高级技巧n动态分配动态分配动态分配是LabVIEW的一个特色,一个看似单个VI调用的节点在运行时实际上调用的是一组VI中的某个,这取决于运行时动态分配输入端连线上的值;每一个在连线上传递的对象都含有指向其类信息的指针,这个类信息包含了一个“动态分配表”,它是一个VI引用表;每个类首先复制了其父类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LabVIEW 面向 对象 程序设计 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内