学习笔记----MATLAB面向对象编程入门01--类的定义、创建对象及类的属性

本文内容为《MATLAB面向对象编程–从入门到设计模式》学习笔记,特此说明。

定义类

MATLAB R2208a之后的版本开始提供面向对象的编程方法。
定义类的语法:

classdef classname < handle
	properties     %属性block开始
	……
	end           %属性block结束

	methods        %方法block开始
	……
	end           %方法block结束
end

注:任何matlab类的定义都是以关键词classdef开始,以end结束。
类后面需要添加一个<handle
一个类定义中包含属性block和方法block。

以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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章