Main Content

オブジェクト配列の作成

コンストラクターでの配列の作成

クラス コンストラクターは、配列を作成し出力引数として返すことにより、配列を作成できます。

たとえば、ObjectArray クラスは入力配列と同じサイズのオブジェクト配列を作成します。そして、各オブジェクトの Value プロパティを対応する入力配列の値に初期化します。

classdef ObjectArray
   properties
      Value
   end
   methods
      function obj = ObjectArray(F)
         if nargin ~= 0
            m = size(F,1);
            n = size(F,2);
            obj(m,n) = obj;
            for i = 1:m
               for j = 1:n
                  obj(i,j).Value = F(i,j);
               end
            end
         end
      end
   end
end

オブジェクト配列を事前に割り当てるために、配列の最後の要素を最初に代入します。MATLAB® は、先頭から最後の 1 つ前までの配列要素を ObjectArray オブジェクトで埋めます。

配列を事前に割り当てた後、各オブジェクトの Value プロパティを入力配列 F の対応する値に割り当てます。クラスを使用するには、次の手順に従います。

  • 魔方陣の数字で 5 行 5 列の配列を作成します。

  • 5 行 5 列のオブジェクト配列を作成します。

F = magic(5); 
A = ObjectArray(F);
whos
  Name      Size            Bytes  Class          Attributes

  A         5x5               304  ObjectArray              
  F         5x5               200  double   

オブジェクト配列におけるプロパティ値の参照

各オブジェクトがプロパティ PropName をもつオブジェクト配列 objArray を考えてみます。

  • 配列インデックス付けを使用して特定のオブジェクトのプロパティ値を参照します。

    objArray(ix).PropName
  • ドット表記を使用してオブジェクト配列内の同じプロパティのすべての値を参照します。MATLAB からプロパティ値のコンマ区切りリストが返されます。

    objArray.PropName
  • コンマ区切りリストを変数に代入するには、式の右辺を大かっこで囲みます。

    values = [objArray.PropName]

たとえば、次の ObjProp クラスを考えてみます。

classdef ObjProp
   properties
      RegProp
   end
   methods
      function obj = ObjProp
         obj.RegProp = randi(100);
      end
   end
end

ObjProp オブジェクトの配列を作成します。

for k = 1:5
   objArray(k) = ObjProp;
end

配列インデックス付けを使用して、オブジェクト配列の 2 番目の要素の RegProp プロパティにアクセスします。

objArray(2).RegProp
ans =

    91

すべての RegProp プロパティの値を数値配列に代入します。

propValues = [objArray.RegProp]
propValues =

    82    91    13    92    64

標準的なインデックス操作を使用して数値配列の値にアクセスします。数値配列の詳細については、行列および配列を参照してください。

関連するトピック