객체 배열 생성하기

생성자에서 배열 만들기

클래스 생성자는 배열을 만들고 출력 인수로 반환하는 방법으로 배열을 생성할 수 있습니다.

예를 들어, 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®ObjectArray 객체를 사용하여 첫 번째 요소부터 끝에서 두 번째 요소까지 값을 채웁니다.

배열을 사전할당한 후에는 각 객체의 Value 속성을 입력 배열 F에서 대응하는 값에 할당합니다. 클래스를 사용하려면 다음을 수행하십시오.

  • 마방진 수로 구성된 5x5 배열 생성

  • 5x5 객체 배열 생성

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

배열 인덱싱을 사용하여 객체 배열의 두 번째 요소에 대한 RegProp 속성에 액세스합니다.

objArray(2).RegProp
ans =

    91

모든 RegProp 속성의 값을 숫자형 배열에 할당합니다.

propValues = [objArray.RegProp]
propValues =

    82    91    13    92    64

표준 인덱싱 연산을 사용하여 숫자형 배열의 값에 액세스할 수 있습니다. 숫자형 배열에 대한 자세한 내용은 행렬과 배열 항목을 참조하십시오.

관련 항목