数学建模社区-数学中国
标题:
如何命名一个事件
[打印本页]
作者:
建不了的模。
时间:
2014-12-30 10:42
标题:
如何命名一个事件
在MATLAB面向对象程序设计中,一个事件要用一个名称来标识。在一个类的events块中声明一个标识符,便可定义该类中的一个事件的标识,我们把这样的标识也称为事件,其格式如下:
classdef 类名 < handle
…
events
事件名
end
end
例如在下面的类MClock中定义了一个事件Alarm,我们可以通过改变成员Enable的值来触发这个事件。
classdef MClock < handle %时钟类
properties
Enable = false %是否启动
end
events
Alarm %闹钟
end
end
像类中其他成员一样,在events块中定义事件时,也可以设置相应的特性值,以便控制事件的触发和听众的定义等,例如:
events (ListenAccess = 'private', NotifyAccess = 'private')
anEvent
anotherEvent
end
上面events块中的两个事件anEvent、anotherEven都具有相同的特性值,即ListenAccess和NotifyAccess都是私有的,这就表明这两个事件只有本类的方法才可访问,并且只有本类的方法才可触发它们的发生。如果要在同一个类中定义其他具有不同特性值的事件时,只要单独再开一个events块即可。表8-2给出了事件可以设置的所有特性名、类型及意义。
表8-2 事件特性表
特性名称 类型 说明
Hidden 逻辑型,默认值为false 隐藏性。当值为true时,该事件就不会出现在events函数的返回事件列表中。
ListenAccess 枚举,默认值为public 收听访问控制特性。该属性用来确定在何处可以创建其听众。可以取的值有:
(1)public——访问不受限。
(2)protected——只有本类和派生类的方法可以访问。
(3)private——仅本类方法可以访问。
meta.class类对象,或meta.class类对象元胞阵列 仅在列表内的类被授权可收听该事件。
(MATLAB 2010版本以下不支持) 这里列表中的类是通过meta.class对象来指定的。
NotifyAccess 枚举,默认值为public 广播访问控制特性。该属性用来确定在何处能够广播该事件。可以取的值有:
(1)public——任意位置都可广播该事件。
(2)protected——只有本类和派生类的方法才可广播该事件。
(3)private——仅本类的方法才可广播该事件。
meta.class类对象,或meta.class类对象元胞阵列 仅在列表内的类被授权可广播该事件。
这里列表中的类是通过meta.class对象来指定的。
除了自己可以定义事件名称外,MATLAB中还提供了4个预定义事件,这些事件主要涉及所在类中的属性成员值的改变和查询过程,它们分别是PreSet、PostSet、PreGet和PostGet。在定义一个事件类时,不需要在事件块中列出上面的4个事件。当上面的事件发生时,相应的回调函数会接收到一个event.PropertyEvent对象。关于这4个预定义事件的使用我们将在本章第3节详细介绍。
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5