class定義などなど メモ

クラス定義 基本形

通常のファイル同様 .m ファイル形式でOK.

classdef ClassName
    properties        
        foobar
        hogehoge
    end
    methods
        function varargout = DispHoge(obj,arg2,arg3)
            disp(obj.hogehoge)
            disp(arg2+arg3)
        end
    end
end

objはこのクラスによって生成されたオブジェクト(インスタンス)のことを指す.

コンストラクタ

クラス名と同名のfunctionを作成することはできない.
ただしコンストラクタとして,以下のようにインスタンス生成時に実行されるメソッドとして定義することはできる.

function obj = ClassName(val)
    obj.foobar = val
end

インスタンス生成

直下にあるかパスが通っている状態で

A = ClassName; % インスタンス生成
A.foobar = hogehoge; % プロパティ値入力

他の言語でよくあるような()は付けない.
プロパティを入力する手間を省く場合は,上述のコンストラクタを使用して

A = ClassName(val)

とする.

メソッド呼び出し

上記のDispHoge(obj,arg2,arg3)を使うときは,

A.DispHoge(arg2,arg3)

または

DispHoge(A,arg2,arg3)

のようにする.個人的には前者を推奨する.

vararginはどうなる?

vararginを使って以下のように記述されたメソッドは,第二引数からfunction名の次の()に入れて使用することができる.
functionを定義する文の第一引数には,生成されたobjを入れる.

% クラス定義ファイル
methods
    function MyFunction(varargin)
        % assign
        obj = varargin{1}
        arg2 = varargin{2}
        arg3 = varargin{3}
        
        % body
        ...
    end
end
% 実行ファイル
A = ClassName;
A.MyFunction(arg2,arg3)

参考 - MathWorks公式


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2018-06-20 (Wed) 16:58:12 (215d)