用XControl实现面向组件的编程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用XControl实现面向组件的编程

用 XControl 实现面向组件的编程 XControl 是 LabVIEW 8 中出现的新功能。 ??? 面向组件的编程(Component Oriented Programming ,COP)技术建立在对象技术之上,它是对象技术的进一步发展,类这个概念仍然是组件技术中一个基础的概念,但是组件技术更核心的概念是接口。组件技术的主要目标是复用--粗粒度的复用。组件的核心是接口。 ??? LabVIEW 为我们提供了大量漂亮的控件,可以让我们非常方便的就搭建出一个程序界面。然而,对于追求完美的用户,LabVIEW 提供的为数有限的控件是远远不够的。比如图1,是 LabVIEW 8.2 一个新功能,导入导入共享库向导的界面。在它右上方有四个按钮,这四个按钮有着特殊的外观图标,在 LabVIEW 中没有直接提供这样的按钮。要拥有这样的按钮,并保存下来以供再次使用,就只能自己制作一个自定义控件。关于(用户自定义控件可以参考文章《用户自定义控件中 Control, Type Def. 和 Strict Type Def. 的区别》) ?? 图1:LabVIEW 8.2?中 Import Shared Library 的界面 ??? 自定义控件虽然可以定义控件的外观,但无法定义控件的行为,功能复杂一点的控件,.ctl 文件就爱莫能助了。还是以图1 为例,它的 Include Paths 控件是“一个”功能比较复杂的控件,它比 LabVIEW 自带的列表框多了编辑功能。用户添加或编辑一个路径时,这个控件要为用户在所编辑的项目提供直接编辑使用的文本框,和浏览路径按钮。 ??? 实际上这个编辑功能是由三个 LabVIEW 提供的标准控件合作完成的:一个 Listbox、一个 String 和一个 Button 控件。他们的行为是在程序运行时决定的:当用户编辑控件中某一路径时,程序把 String 和 Button 挪到 Listbox 上需要编辑的那一项,并遮挡住 Listbox 原本的内容。这样,用户只能在 String 控件内输入内容,或者点击浏览按钮选择一个路径。编辑完成,程序把 String 控件的值写到 Listbox 上相应的项目中。 ??? 我们虽然看不见图1 例子中的程序框图,但是可以想象,上述的一系列操作,如判断 String 和 Button 应当显示的位置、然后挪动它们、把 String 值传给 Listbox,处理用户对他们操作的消息等等,会为这个程序添加不少复杂的代码。这些代码应该是与程序的其它部没有任何直接关系的。但是把它们也写在这个界面 VI 的程序框图上,一方面影响了程序的可读性,另一方面,编程人员有可能在更改程序其它问题是不小心改变了这部分代码,较低了代码的安全性。 ??? 从逻辑关系上来看,图1 中上半部分的 Listbox、String、浏览按钮以及右上方四个操作按钮,他们共同完成一个功能,与他们之外的界面控件没有什么关联,所以他们七个应当被作为一个控件,或者说是一个组件。这个组件需要与程序其它模块之间的接口就只是一个字符窜数组,用于输入或输出一组路径。其它的数据和操作,都应当是组件的私有的,外部不可见的。 ??? 在 LabVIEW 8 之前,想分离和封装出这样一个组件是非常困难的。因为既然这七个控件都在这个 VI 的面板上,对它们的操作和相应的代码必须放在这个 VI 的程序框图上,无法与其他代码隔离开。也不是说绝对没有办法,比如你可以使用 sub-panel,动态注册事件等方法,强行的把它们的代码分隔开。但是这些方法并不简单直观,使用它们有可能会让程序变得跟为复杂、难以阅读和维护。 ??? XControl 的出现,才终于为这个问题提供了一个比较完美的解决方案。利用 XControl,图1 中我们提到的七个应当划分在同一组件的控件可以被制作成一个 XControl。这个 XControl 的外观就是图1 中上半部分七个控件组合在一起的样子,?XControl 与用户自定义控件相比,它不仅定义了控件的外观,更重要的是,开发人员可以通过编写 LabVIEW 代码定义 XControl 的行为。并且这些代码是对外隐藏的。开发人员还可以定义 XControl 的属性和方法,通过 Property Node 和 Invoke Node 在程序中使用这些属性和方法。 ????同样完成选取一组路径的功能,可以有各种不同的界面,比如各种 C++ 编译器都会提供类似的功能,但外观各不相同。你可以利用 XControl,编写多个外观,行为大相径庭的组件。但是,只要他们的接口相同-都是一个字符串数组,用户就可以在这些组件内任意互换,选用自己喜欢的组件,而不需改动程序的任何其它部分。 ??? 现在,我对 XControl

文档评论(0)

busuanzi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档