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