面向对象Matlab编程小demo
来源:互联网 发布:茶空间网络组织架构 编辑:程序博客网 时间:2024/05/06 07:39
1.前言
matlab初学者,在编写matlab代码时,感觉代码比较乱,不好写也不易看,突然想到是否可以使用面向对象的思想去编写matlab程序,在网上找了找,果然有一本专门讲解面向对象的matlab书,并且作者还讲解了设计模式,很不错。自己也尽量的使用之前编写Java程序的方式去写,简单地写一个demo程序,以方便自己以后查看。
参考书籍:《MATLAB面向对象编程---从入门到设计模式》作者 徐潇,李远。感谢两位作者
操作系统:win7
matlab版本:R2010b
2.步骤
这个简单的demo的功能是每隔一段时间,向两个观察者发送消息,接收者收到消息后打印消息
(1)建立一个文件夹叫demo,打开它,再逐步建立文件夹"+cn" --> "+jxm" --> "+demo",类似于Java中的包一样,注意在matlab中的包名前要加"+"
(2)点击"+demo"文件,右键-->“New File”-->"Class"建立Publisher类
classdef Publisher < handle events MyEvent1;%定义事件1 MyEvent2;%定义事件2 end properties deltaTime;%间隔时间,单位为毫秒 myTimer;%Timer count = 0;%计数,5次后关闭timer end methods %构造函数 function obj = Publisher(deltaTime) obj.deltaTime = deltaTime; %timer obj.myTimer = timer('TimerFcn',@obj.timerFunction,'Period',obj.deltaTime/1000,'ExecutionMode','fixedrate'); end %启动timer函数 function start(obj) start(obj.myTimer); end %停止timer函数 function stop(obj) ts=timerfind; if (~isempty(ts)) stop(ts); delete(ts); end end %timer响应函数 function timerFunction(obj,timer,event) %通知观察者1 obj.notify('MyEvent1'); %通知观察者2,传递消息"Hello Observer!" msg = cn.jxm.demo.Msg('Hello Observer!'); obj.notify('MyEvent2',msg); obj.count = obj.count + 1; if(obj.count == 5) obj.stop(); end end end end(2)同样方法建立Msg类,注意该类的父类
classdef Msg < event.EventData properties str; end methods function obj = Msg(str) obj.str = str; end end end
(3)建立Observer1类
classdef Observer1 < handle properties str = 'I am Observer1, response to MyEvent1'; end methods %添加消息发布者 function addPublisher(obj,publisher) publisher.addlistener('MyEvent1',@obj.listenerFunction); end %收到消息后的响应 function listenerFunction(obj,src,data) disp(obj.str); end end end
(4)建立Observer2类
classdef Observer2 < handle properties str = 'I am Observer2, response to MyEvent2.The msg is: '; end methods %添加消息发布者 function addPublisher(obj,publisher) publisher.addlistener('MyEvent2',@obj.listenerFunction); end %收到消息后的响应 function listenerFunction(obj,src,data) disp([obj.str,data.str]); end end end
(5)建立测试类Test
classdef Test properties end methods(Static) function main() publsher = cn.jxm.demo.Publisher(1000); observer1 = cn.jxm.demo.Observer1(); observer1.addPublisher(publsher); observer2 = cn.jxm.demo.Observer2(); observer2.addPublisher(publsher); publsher.start(); end end end
3.测试
在matlab中输入:
import cn.jxm.demo.Test
Test.main()
得到结果
0 0
- 面向对象Matlab编程小demo
- MATLAB面向对象编程
- MATLAB面向对象编程简介
- matlab面向对象编程基本
- 初识Matlab面向对象编程
- 面向对象编程小例子
- MATLAB面向对象编程import使用
- MATLAB面向对象编程属性初始化方法
- JavaScript面向对象编程 小列子
- 面向对象编程小例子解析
- Java面向对象编程小总结
- MATLAB面向对象编程类和对象的创建
- day03--面向对象--Demo
- perl 面向对象demo
- js 面向对象Demo
- 一个简单的Matlab面向对象编程实例
- MATLAB面向对象编程学习笔记(二)
- MATLAB面向对象编程学习笔记(一)
- Base64加密原理
- NSURLProtocol处理重定向时需要注意301和302状态
- 微信支付与分享
- Service之跨进程调用服务ADIL详解(二)
- HTML5滑动(swipe)事件
- 面向对象Matlab编程小demo
- 九度考研真题 清华 2011-4清华 1065:输出梯形 排版提
- adb logcat命令查看并过滤android输出log
- php get_magic_quotes_gpc()函数用法介绍
- 洛谷 通往奥格瑞玛的道路
- SQL SERVER逻辑查询处理阶段简介
- ThreadLocal
- 再议gluPerspective和gluLookAt的关系
- web.xml 的一些格式