- 在线时间
- 1084 小时
- 最后登录
- 2015-9-10
- 注册时间
- 2014-4-18
- 听众数
- 162
- 收听数
- 1
- 能力
- 10 分
- 体力
- 43976 点
- 威望
- 6 点
- 阅读权限
- 255
- 积分
- 15250
- 相册
- 0
- 日志
- 0
- 记录
- 1
- 帖子
- 3471
- 主题
- 2620
- 精华
- 1
- 分享
- 0
- 好友
- 513
升级   0% TA的每日心情 | 开心 2015-3-12 15:35 |
---|
签到天数: 207 天 [LV.7]常住居民III
 群组: 第六届国赛赛前冲刺培 群组: 国赛讨论 群组: 2014美赛讨论 群组: 2014研究生数学建模竞 群组: 数学中国试看培训视频 |
在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节详细介绍。
|
zan
|