이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

종속 속성에 대한 set 메서드 및 get 메서드

종속 속성은 데이터를 저장하지 않습니다. 종속 속성의 값은 일부 다른 값(예: 비Dependent 속성의 값)에 종속됩니다.

종속 속성의 경우, 속성이 쿼리될 때 속성의 값을 결정할 수 있으려면 종속 속성이 get 액세스 메서드(get.PropertyName)를 정의해야 합니다.

isequalisequaln을 사용하여 객체가 동일한지 테스트할 때는 종속 속성의 get 메서드에서 반환한 값은 고려하지 않습니다.

종속 속성의 값을 설정할 수 있으려면 해당 속성이 set 액세스 메서드(set.PropertyName)를 정의해야 합니다. 속성 set 액세스 메서드는 일반적으로 값을 저장하기 위해 또 다른 비Dependent 속성에 값을 할당합니다.

예를 들어, Account 클래스는 Currency 속성의 값에 종속되는 종속 Balance 속성의 값을 반환합니다. get.Balance 메서드는 Balance 속성의 값을 계산하기 전에 Currency 속성을 쿼리합니다.

Balance 속성이 쿼리되면 MATLAB®get.Balance 메서드를 호출합니다. get.Balance는 명시적으로 호출할 수 없습니다.

다음은 이 클래스의 일부분을 나열한 것으로, 종속 속성과 해당 get 메서드를 보여주고 있습니다.

classdef Account
   properties
      Currency
      DollarAmount
   end
   properties (Dependent)
      Balance
   end
   ...
   methods
      function value = get.Balance(obj)
         c = obj.Currency;
         switch c
            case 'E'
               v = obj.DollarAmount / 1.1;
            case 'P'
               v = obj.DollarAmount / 1.5;
            otherwise
               v = obj.DollarAmount;
         end
         format bank
         value = v;
      end
   end
end

종속 속성값 계산하기

속성 get 메서드를 응용하는 방법 중 하나는 필요할 때에만 속성값을 결정하고 그 값을 저장하지 않는 것입니다. 이 접근 방식을 사용하려면 속성의 Dependent 특성을 true로 설정하십시오.

properties (Dependent = true)
   Prop
end

Prop 속성에 대한 get 메서드는 해당 속성의 값을 결정하여 해당 메서드 내에서 객체에 값을 할당합니다.

function value = get.Prop(obj)
   value = calculateValue;
   ...
end

get 메서드는 함수 또는 calculateValue라는 정적 메서드를 호출하여 속성값을 계산하고 value를 결과로 반환합니다. 속성 get 메서드는 출력값을 생성하기 위해 메서드 내에서 필요한 동작을 모두 수행할 수 있습니다.

속성 get 메서드의 예제는 요청 시 데이터 계산하기 항목을 참조하십시오.

종속 속성에 set 메서드를 사용하는 경우

종속 속성은 값을 저장하지 않지만 종속 속성에 대해 set 메서드를 정의하면 코드에서 속성을 설정할 수 있습니다.

예를 들어, 속성 이름을 OldPropName에서 NewPropName으로 변경하는 클래스가 있다고 가정하겠습니다. 이전 이름을 새 사용자에게 노출하지 않고 계속 사용하도록 허용할 수 있습니다. 이전 속성 이름을 지원하려면 OldPropName을 set 메서드 및 get 메서드를 사용하여 종속 속성으로 정의하십시오.

properties
   NewPropName
end
properties (Dependent, Hidden)
   OldPropName
end
methods
   function obj = set.OldPropName(obj,val)
      obj.NewPropName = val;
   end
   function value = get.OldPropName(obj)
      value = obj.NewPropName;
   end
end

이전 속성값과 새 속성값을 모두 저장함으로 인해 낭비되는 메모리가 없습니다. OldPropName을 액세스하는 코드는 여전히 정상적으로 작동합니다. OldPropNameHidden 특성을 설정하면 새로운 사용자에게 속성이 표시되지 않게 됩니다.

속성 set 메서드에서 값이 할당되면 설정 중인 속성에 대해 정의한 모든 set 메서드가 실행됩니다. 예제는 요청 시 데이터 계산하기 항목을 참조하십시오.

프라이빗 set 액세스를 가지는 종속 속성

단지 값을 반환하기 위해서 종속 속성을 사용한다면 종속 속성에 대해 set 액세스 메서드를 정의하지 마십시오. 대신, 종속 속성의 SetAccess 특성을 private으로 설정하십시오. 예를 들어, MaxValue 속성에 대해 다음과 같은 get 메서드가 있다고 가정하겠습니다.

methods
   function mval = get.MaxValue(obj)
      mval = max(obj.BigArray(:));
   end
end

이 예제에서는 MaxValue 속성을 사용하여 값을 반환하며, 이 값은 쿼리될 때에만 계산됩니다. 이 응용 사례에서는 MaxValue 속성을 종속적이고 프라이빗한 속성으로 정의합니다.

properties (Dependent, SetAccess = private)
   MaxValue
end

관련 항목