更新时间:2022-08-25 14:53
公共变量(Public variables)是同一进程族中的进程共同使用的变量。这样规定有利于程序的模块化和结构化。公共变量的这一公用规则是由进程族的概念派生出来的。他的和全局变量作用域不一样啊,全局变量的作用域是整个工程,而类的public变量的作用域只是在类中而已
公共变量是同一进程族中的进程共同使用的变量。这样规定有利于程序的模块化和结构化。如图1所示,假设在进程函数A上活动的进程a与在进程函数B上活动的进程b(a,b属于同一进程族)共同使用公共变量V,当又在进程函数A、B上创建出新的进程a’,b’时,尽管进程a与a’以及b与b’具有相同的代码,并且a’与b’的共同变量的变量名也是V,但这个V与a与b的公共变量是不同的实体。
公共变量的这一公用规则是由进程族的概念派生出来的。
程序设计离不开变量。一个变量除了类型和取值之外,还有一个重要的作用就是它的作用域。变量的作用域指的是变量在什么范围内是有效的或能够被访问的。在VEP中,若以变量的作用域来分,内存变量可分为公共变量(也称为全局变量)、私有变量和本地变量(也称为局部变量)3类。
在任何模块中都可以使用的变量称为公共变量,公共变量可用下述命令来建立。
格式:public<内存变量表>
功能:将内存变量表指定的变量设置为公共变量,并将这些变量的初值均赋以.F.。
说明:
(1)若下层模块中建立的内存变量要供上层模块使用,或某模块中建立的内存变量要供并列模块使用,必须将这种变量说明成公共变量。
(2)VEP默认命令窗口中定义的变量都是公共变量,但这样定义的变量不能在程序方式下使用。
(3)程序终止执行时,公共变量不会自动清除,而只能用release命令或clear all命令来清除公共变量。
VFP默认程序中定义的变量是私有变量,私有变量仅在定义它的模块及其下层模块中有效,而在定义它的模块运行结束时自动清除。
私有变量允许与上层模块的变量同名,但此时为分清两者是不同的变量,需要采用暂时屏蔽上级模块变量的方法。下述命令声明的私有变量就能起这样的作用。
格式:private[<内存变量表>][all[likelexcept<通配符>]]
功能:声明私有变量并隐藏上级模块的同名变量,直到声明它的程序、过程或自定义函数执行结束后,才恢复使用先前隐藏的变量。
说明:
(1)“声明”与“建立”不一样,前者仅指变量的类型,后者包括类型与值。public命令除声明变量的类型外还赋了初值,故称建立;而private并不对变量赋值,仅是声明而已。
(2)若应用程序由多人同时开发,很可能因变量名相同造成失误,如果各人将自己所用的变量用private命令来声明,就能避免发生混淆。
(3)在程序模块调用时,参数接收命令parameters声明的参变量也是私有变量,与private命令作用相同。
本地变量只能在建立它的模块中使用,而且不管在高层或低层模块中使用,该模块运行结束时本地变量就自动释放。
格式:local<内存变量表>
功能:将<内存变量表>指定的变量设置为本地变量,并将这些变量的初值均赋以.F.。
注意:local与locate前4个字母相同,故不可缩写。
MATLAB通常的基本工作空间是'base'空间。MATLAB在程序运行过程中,将为每个函数分配它自己的函数工作空间(从基本空间中分割出的一块,以函数名作为其工作空间名),各个工作空间之间的变量是不能够直接引用的,在函数退出之后,该函数空间也就立即被注销。而对于脚本M文件,其工作空间与基本工作空间'base'是共享的。因此,对于函数文件,运行结果除输出变量返回到基本工作空间或者其父工作空间(调用该函数的程序的工作空间)之外,其中间变量不在基本工作空间或者其父工作空间保留。而脚本M文件运行结果,其运算过程中所用到的中间变量也将在基本工作空间'base'中保留。
assignin为工作空间的变量指派值,其语法为:
assignin(WS,'name',V),其中,WS为工作空间名称,'name'为变量名,V是为该变量指派的值。
evalin实现在工作空间中某个表达式字符串,并将结果返回,其语法为:
evalin(WS,'expression'),其中,WS为工作空间名称,'expression'为表达式符号串。
利用assignin与evalin指令,可以实现不同M文件主函数与子函数的工作空间变量的共享,这将在以后的M函数编写中详细讲到。在这里仅仅对基本工作内部的操作做一个简单示例。
例:
clear;%清空当前工作空间
a=3;%在基本工作空间创建一个变量
assignin('base','a',5);%为该变量指派新的值
a%查看现在该变量的值
a=
5
b=evalin('base','3*a+2')%在基本工作空间中计算式子3*a+2的值并将结果赋予b
b=
17
普通加工程序直接用数值指定G代码和移动距离;例如,GO1和X100.0。使用用户宏程序时,数值可以直接指定或用变量指定。当用变量时,变量值可用程序或用MDI面板上的操作改变。
计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。
局部变量只能用在宏程序中存储数据,例如,运算结果.当断电时,局部变量被初始化为空.调用宏程序时,自变量对局部变量赋值, #100-#199 #500-#999
公共变量在不同的宏程序中的意义相同.当断电时,变量#100-#199初始化为空.变量#500-#999的数据保存,即使断电也不丢失. #1000 系统变量
系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置和补偿值.
局部变量和公共变量可以有0值或下面范围中的值: -1047到-10-29或-10-2到-1047
如果计算结果超出有效范围,则发出P/S报警NO.111.
当在程序中定义变量值时,小数点可以省略。 例:当定义#1=123;变量#1的实际值是123.000。
对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数N0.6036和6037的设定,某些公共变量可同时用于两个轨迹。
面向对象的目的就是抽象和封装;在类中,变量是对类本身而言,可以称之为域,也可以是Private和Public等。属性是外部显示出来的特性。虽然可以把域声明为Public的,但是这么做不利于类的封装,因为外部使用者可以对类进行直接修改。属性控制了外部使用者对该域的使用和控制,如何控制,则可以放在类进行封装。
属性更多的体现了对象的封装性,不直接操作类的数据内容,而是通过访问器进行访问。借助于get和set对属性进行读写和执行语句的操作。属性还有以下几个用法:
a) 可以允许在数据更改前验证数据。
b) 他们可以透明的公开某个类的数据,该类的数据实际上市从其他源数据检索到的。
c) 当数据被修改时,他们可以采取行动,例如引发事件或者更改其他字段的值。
两个有以下区别:
a) 属性是对字段的封装。
b) 属性可以控制读写,而变量不可以。
c) 属性可以进行赋值操作,变量不可以。
d)对一个对象进行数据绑定时,属性是可以绑定的,但是公共变量不行。