Programming with MATLAB | ![]() ![]() |
ポートフォリオコンストラクタの変更
ポートフォリオ構造体配列は、アカウント番号を集める付加的なフィールドを必要とします。このフィールドを作成するため、つぎのライン
p.account_number = '';
を@portfolio/portfolio.m
にゼロ引数と可変引数部分をもたせて加えます。
getAccountNumber関数
この例題で、getAccountNumber
は、MATLAB関数で、クライアント名の最初の三文
字とその後に数字を付けてアカウント番号を作成し、それを戻します。実現する
技法を示すために、getAccountNumber
は、ポートフォリオメソッドではなく、そ
のため、直接ポートフォリオオブジェクトデータにアクセスできません。それで、
ポートフォリオオブジェクト構造体の中の名前のフィールドにアクセスできる
ポートフォリオsubsrefメソッドを定義する必要があります。
この例題に対して、getAccountNumber
は、一つの乱数を発生させ、書式化し、ポートフォリオ名フィールドの1
番目から3
番目の要素に連結するものです。
function n = getAccountNumber(p) % オブジェクト p用のアカウント番号を与える n = [upper(p.name(1:3)) strcat(num2str(round(rand(1,7)*10))')'];
ポートフォリオオブジェクトは、フィールド名でインデックスが付加され、その
後で、最初の三文字を抽出するために数字でサブスクリプトが使われています。
subsref
メソッドは、サブスクリプトを使ったリファレンスのこの型をサポートす
るように記述しなければなりません。
![]() |
loadobjメソッド | ポートフォリオsubsrefメソッド | ![]() |