使用MATLAB进行面向对象编程(Object-Oriented Programming,OOP)。
类的定义
MATLAB自带的类模板
classdef MyClass
%MYCLASS 此处显示有关此类的摘要
% 此处显示详细说明
properties
Property1
end
methods
function obj = MyClass(inputArg1,inputArg2)
%MYCLASS 构造此类的实例
% 此处显示详细说明
obj.Property1 = inputArg1 + inputArg2;
end
function outputArg = method1(obj,inputArg)
%METHOD1 此处显示有关此方法的摘要
% 此处显示详细说明
outputArg = obj.Property1 + inputArg;
end
end
end
示例类实现
classdef (Attributes) ClassName < SuperclassName
properties (Attributes)
PropertyName
PropertyName size class {validation functions}
end
methods (Attributes)
function obj = methodName(obj,arg2,...)
...
end
end
events (Attributes)
EventName
end
end
classdef (Attributes) ClassName < SuperclassName
enumeration
EnumName
end
end
说明
- 类文件以
classdef
关键词开始,以end
结束; - 类中包含变量(
properties
)、方法(methods
)、事件(events
)和枚举(enumeration
),以end
结束; - 类文件中可在类声明后定义只在类中使用的函数;
- 可直接使用模板新建类文件;
- 类中的函数可定义在外部文件中,但是要和类文件放到同一文件夹中,文件夹名为
@
+类名
; - 类成员名可按
Tab
自动补全; - 变量的属性(
Attributes
)默认public
,可给默认初值; - 属性包括:
GetAccess
、SetAccess
、Constant
,其中Constant
可用类名直接调用,无需创建对象; - 可有多个变量代码块,对应不同属性;
- 方法包括构造函数(可选),与类文件同名,在构造对象时调用进行初始化,返回
obj
; - 定义
get
和set
方法,在特定变量被访问时调用:e.g. 输入值合法性判断; - 方法的属性也可定义,
Static
属性方法,可用类名直接调用,无需创建对象; - 可重载函数、运算符:e.g.
plot
、subsref
、subsasgn
; - 使用
<
从父类继承,实现代码复用,多个父类间用&
连接; - 继承
handle
类,通过传递句柄(相当于传递引用)减少值传递和拷贝,e.g.reset
; - 构建
delete
方法,相当于析构函数; - 通过对
handle
类定义事件来监督对象和变量的变化,调用addlistener
函数构建listener
,通过notify
函数触发事件,listener
接收触发后执行预先定义的回调函数(Callback
); - 被监督变化的变量属性需要为
SetObservable
; - 在修改类的定义后已创建的类不会更改,因此需要运行
clear
,重新运行代码;
资料
书籍
- Object-Oriented Programming
- A Guide to MATLAB Object-Oriented Programming
- MATLAB面向对象编程——从入门到设计模式
- Object Oriented Programming and Classes in MATLAB