本文内容为《MATLAB面向对象编程–从入门到设计模式》学习笔记,特此说明。
MATLAB R2208a之后的版本开始提供面向对象的编程方法。
定义类的语法:
classdef classname < handle
properties %属性block开始
……
end %属性block结束
methods %方法block开始
……
end %方法block结束
end
注:任何matlab类的定义都是以关键词classdef开始,以end结束。
类后面需要添加一个
以Point2D二维点类举例说明:
classdef Point2D < handle
Properties
x
y
end
methods
function obj = Point2D(X0,y0) %%Point2D类的构造函数
obj.x=x0;
obj.y=y0;
end
function normaize(obj) %Point2D类的函数
r=sqrt(obj.x^2+obj.y^2);
obj.x=obj.x/r;
obj.y=obj.y/r;
end
end
end
method block中有一个和class同名的方法,叫做Constructor(构造函数,或者构造方法)。Constructor是一个特殊的方法,它负责类创建类的对象,通常还可以用来初始化对象的属性,即给属性赋初值。
创建对象的方式是直接调用类的构造函数。
p1=Point2D(1.0,1.0); %Point2D为类Point2D的构造函数
p2=Point2D(2.0,3.0); %Point2D为类Point2D的构造函数
1.访问对象的属性
一般使用Dot运算符(也叫作成员选择运算符)来访问对象的属性(Property)。
p1=Point2D(1.0,1.0);%创建Point2D类的对象
p1.x %访问对象的属性
ans=1.0
2.设置属性的默认值
在matlab类的property block定义中,可以为属性直接赋值。通过这种方法提供的值叫做属性的默认值(Default Value).
classdef Point2D < handle
Properties
x=1.0;
y=sin(pi/2);%若使用表达式,则该表达式在类定义被matlab装载时执行一次,这个值最好为固定值。
end
end
3.常量属性
常量(Constant)属性,就是在对象生存周期中保持不变的属性。无论是在内部还是在外部对该属性进行修改都会报错。定义Constant property需要使用Constant关键词。
classdef A < handle
properties(Constant)
R=pi/180; %若不显示地赋予被声明成常量属性的一个特定的值,那么默认的Constant值时empty double.
end
end
Constant property的一个作用是存储/封装一些常用的常量,以便在程序中可以不用创建一个对象就能使用类中的常量。
A.R %这里A是类名
4.非独立属性
对象可能存在这样的属性:其值依赖于其他属性,一旦其他属性改变,该值也将进行相应地变化。这时可以把该变量声明成Dependent(非独立)属性。
Dependent属性的特点是:对象内部没有给该属性分配物理的存储空间,每次该属性被访问时,其值都被动态地计算出来。
classdef Point2D < handle
Properties
x
y
end
properties(Dependent)
r
end
methods
function obj = Point2D(X0,y0) %%Point2D类的构造函数
obj.x=x0;
obj.y=y0;
end
function r=get.r(obj) %Dependent属性的计算公式要放在get方法中
r=sqrt(obj.x^2+obj.y^2);
end
end
end
5 隐藏属性
隐藏(Hidden)的效果是在命令行中查看对象的信息时,该属性不会被显示出来。
在类定义中可以使用关键词Hidden把成员属性定义成隐藏:
classdef A < handle
properties(Hidden)
var
end
end