わかさぎのブログ

プログラミング、Atcoderの勉強とか

MATLABクラス 銀行口座クラスの例

クラスの開発 - 一般的なワークフロー - MATLAB & Simulink - MathWorks 日本

 

methods
function BA = BankAccount(AccountNumber, InitialBalance)
BA.AccountNumber=AccountNumber
BA.AccountBalance=InitialBalance
BA.AccountListerner=AccountManager.addAccount(BA);
end
 

ファイル名と同じ名前のメソッドはコンストラクタ。

これはJAVAライクなシンタックス。コンストラクタだから

 

function self = function_name(引数 , 引数,,,)

    self.hoge = 引数

    self.hoge = 引数

というパターンになるはず。

 

properties(SetAccess = private)
AccountNumber
AccountBalance
end

 マトラボでいうプロパティはパイソンでいうインスタンス変数のこと。

アクセスできるできないのパイソンでいう__をSetAccessで設定する。

パイソンと違うのは宣言が必要なところでpropertiesでは宣言だけをする。

コンストラクタでのちに代入していく。

 

methods (Static)

パイソンと同じでインスタンスの生成が必要ないものをスタティックメソッドという。

 

BA = BankAccount(1234567,500)
BA = 

  BankAccount with properties:

      AccountNumber: 1234567
     AccountBalance: 500
    AccountListener: [1x1 event.listener]

パイソンと同じくインスタンスの生成。

 

getStatement(BA)
-------------------------
Account: 1234567
CurrentBalance: 500.00
Account Status: open
-------------------------
      function getStatement(BA)
         disp('-------------------------')
         disp(['Account: ',num2str(BA.AccountNumber)])
         ab = sprintf('%0.2f',BA.AccountBalance);
         disp(['CurrentBalance: ',ab])
         disp(['Account Status: ',BA.AccountStatus])
         disp('-------------------------')
      end
これはコマンドラインからメソッドを呼んでいる。スクリプトの中で呼ぶときはどうすればいい?
BA.getStatement()ではないのか?
これは引数selfと思えばいい