使用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