| Programming with MATLAB |
ポートフォリオpie3メソッド
ポートフォリオクラスは、MATLAB関数pie3
を多重定義して、ポートフォリオオブジェクトを受け入れ、クライアントのポートフォリオ全体の中で個々の資産の割合を示す3次元円グラフを表示します。MATLABは、入力引数が単一のポートフォリオオブジェクトの場合、pie3
の@portfolio/pie3.m バージョンを呼び出します。
function pie3(p)
% PIE3 ポートフォリオの3-D pie チャートを作成
stock_amt = 0; bond_amt = 0; savings_amt = 0;
for i=1:length(p.ind_assets)
if isa(p.ind_assets{i},'stock')
stock_amt = stock_amt + ...
get(p.ind_assets{i},'CurrentValue');
elseif isa(p.ind_assets{i},'bond')
bond_amt = bond_amt + ...
get(p.ind_assets{i},'CurrentValue');
elseif isa(p.ind_assets{i},'savings')
savings_amt = savings_amt + ...
get(p.ind_assets{i},'CurrentValue');
end
end
i = 1;
if stock_amt ~= 0
label(i) = {'Stocks'};
pie_vector(i) = stock_amt;
i = i +1;
end
if bond_amt ~= 0
label(i) = {'Bonds'};
pie_vector(i) = bond_amt;
i = i +1;
end
if savings_amt ~= 0
label(i) = {'Savings'};
pie_vector(i) = savings_amt;
end
pie3(pie_vector,label)
set(gcf,'Renderer','zbuffer')
set(findobj(gca,'Type','Text'),'FontSize',14)
cm = gray(64);
colormap(cm(48:end,:))
stg(1) = {['Portfolio Composition for ',p.name]};
stg(2) = {['Total Value of Assets: $',num2str(p.total_value)]};
title(stg,'FontSize',12)
多重定義されたpie3メソッドは、三つの部分から構成されています。
getメソッドを使って、個々の包含されているオブジェクトのCurrentValueプロパティにアクセスします。各クラスのトータル価値が加算されます。pie3関数を呼び込み、あるフォントを作成し、カラーマップを調整し、タイトルを加えます。
| ポートフォリオdisplayメソッド | ポートフォリオの作成 |