クラスを使用したグラフィックスの表示
クラスによる面積の計算
CircleArea
クラスで、標準的なクラス定義の構文を示します。このクラスは円の半径の値を保存し、リクエストに応じて円の面積を計算します。CircleArea
にはクラスのオブジェクトをグラフ化し、表示し、作成するためのメソッドが実装されています。
CircleArea
クラスを使用するには、CircleArea.m
という名前のファイルにこのコードをコピーし、MATLAB® パスにあるフォルダーにこのファイルを保存します。
classdef CircleArea properties Radius end properties (Constant) P = pi end properties (Dependent) Area end methods function obj = CircleArea(r) if nargin > 0 obj.Radius = r; end end function val = get.Area(obj) val = obj.P*obj.Radius^2; end function obj = set.Radius(obj,val) if val < 0 error('Radius must be positive') end obj.Radius = val; end function plot(obj) r = obj.Radius; d = r*2; pos = [0 0 d d]; curv = [1 1]; rectangle('Position',pos,'Curvature',curv,... 'FaceColor',[.9 .9 .9]) line([0,r],[r,r]) text(r/2,r+.5,['r = ',num2str(r)]) title(['Area = ',num2str(obj.Area)]) axis equal end function disp(obj) rad = obj.Radius; disp(['Circle with radius: ',num2str(rad)]) end end methods (Static) function obj = createObj prompt = {'Enter the Radius'}; dlgTitle = 'Radius'; rad = inputdlg(prompt,dlgTitle); r = str2double(rad{:}); obj = CircleArea(r); end end end
CircleArea クラスの使用
ダイアログ ボックスを使用してオブジェクトを作成します。
ca = CircleArea.createObj
半径の値を追加して [OK] をクリックします。
定義された円の面積をクエリします。
ca.Area
ans = 164.2202
オーバーロードしたプロット メソッドを呼び出します。
plot(ca)
クラス定義の説明
クラス定義コードは |
classdef CircleArea |
|
properties
Radius
end |
|
properties (Constant)
P = pi
end |
|
properties (Dependent)
Area
end |
|
methods function obj = CircleArea(r) if nargin > 0 obj.Radius = r; else obj.Radius = 0; end end |
|
function val = get.Area(obj) val = obj.P*obj.Radius^2; end |
|
function obj = set.Radius(obj,val) if val < 0 error('Radius must be positive') end obj.Radius = val; end |
|
function plot(obj) r = obj.Radius; d = r*2; pos = [0 0 d d]; curv = [1 1]; rectangle('Position',pos,'Curvature',curv) line([0,r],[r,r]) text(r/2,r+.5,['r = ',num2str(r)]) axis equal end |
|
function disp(obj) rad = obj.Radius; disp(['Circle with radius: ',num2str(rad)]) end |
end
methods (Static) |
|
function obj = createObj prompt = {'Enter the Radius'}; dlgTitle = 'Radius'; rad = inputdlg(prompt,dlgTitle); r = str2double(rad{:}); obj = CircleArea(r); end |
|
end end |