Main Content

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

종속 속성은 데이터를 저장하지 않습니다. 종속 속성의 값은 다른 값(예: Dependent 이외의 속성의 값)에 종속됩니다. 다음 구문을 사용하여 종속 속성을 정의합니다.

properties (Dependent)
   PropertyName
end

종속 속성은 데이터를 저장하지 않으므로 속성이 쿼리될 때 속성의 값을 결정할 수 있으려면 get 메서드(get.PropertyName)를 정의해야 합니다.

종속 속성이 set 메서드(set.PropertyName)를 가질 수도 있지만 이러한 메서드는 사실상 종속 속성의 값을 설정할 수 없습니다. 그러나 set 메서드는 다른 코드를 포함할 수 있습니다. 예를 들어, 종속 속성과 관련된 속성의 값을 설정할 수 있습니다.

get 메서드 및 set 메서드를 정의하는 방법에 대해 소개하는 내용은 속성 get 및 set 메서드 항목을 참조하십시오.

종속 속성에 대해 get 메서드 정의하기

Account 클래스는 금액을 미국 달러로 저장하고 이 값을 달러화, 유로화, 엔화의 세 가지 통화 중 하나로 반환할 수 있습니다. 변환된 값은 종속 속성 Balance로 표현됩니다. get.Balance 메서드는 USDollarAmountCurrency를 사용하여 Balance 속성을 계산하기 위한 환율을 결정합니다.

classdef Account
   properties
      Currency {mustBeMember(Currency,["USD","EUR","JPY"])} = "USD"
      USDollarAmount = 0
   end
   properties (Dependent)
      Balance
   end
   methods
      function value = get.Balance(obj)
         c = obj.Currency;
         switch c
            case "EUR"
               v = obj.USDollarAmount/0.98;
            case "JPY"
               v = obj.USDollarAmount/0.0069;
            otherwise
               v = obj.USDollarAmount;
         end
         value = v;
      end
   end
end

Account의 인스턴스를 만듭니다. USDollarAmount 속성과 Currency 속성을 설정합니다.

a = Account;
a.USDollarAmount = 100;
a.Currency = "JPY";

사용자가 get 메서드를 명시적으로 호출할 수 없습니다. Balance에 액세스하면 MATLAB®이 get 메서드를 호출하여 원래 금액을 엔화로 환산하여 반환합니다.

a.Balance
ans =

      1.4493e+04

MATLAB은 객체를 표시할 때도 get 메서드를 호출합니다. 세미콜론으로 명령문을 끝내지 않고 Currency를 유로로 설정하면 MATLAB은 Balance get 메서드를 호출하여 업데이트된 값을 표시합니다.

a.Currency = "EUR"
a = 

  Account with properties:

          Currency: "EUR"
    USDollarAmount: 100
           Balance: 102.0400

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

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

예를 들어, propertyChange는 처음에는 OldPropName 속성을 정의한 값 클래스입니다. set 메서드를 사용하여 클래스 사용자의 관점에서 속성 이름을 변경할 수 있습니다.

  • OldPropName을 종속 및 숨겨진 속성으로 다시 정의합니다.

  • OldPropName에 대해 바꾸고 싶은 이름을 가진 새 속성을 정의합니다.

  • NewPropName에 값을 저장하는 set 메서드를 OldPropName에 대해 정의합니다.

  • NewPropName에 저장된 값을 반환하는 get 메서드를 OldPropName에 대해 정의합니다.

classdef propertyChange
    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
end

OldPropName을 액세스하는 코드는 여전히 정상적으로 작동하며, OldPropName을 숨김으로 만들면 새로운 사용자에게는 이전 속성 이름이 보이지 않게 됩니다.

예를 들어, propertyChange의 인스턴스를 만들어 보겠습니다. 이전 속성 이름을 사용하여 속성값을 설정한 다음 객체를 표시합니다. MATLAB은 속성에 대한 값을 새 이름으로 설정하고 이를 표시합니다.

a = propertyChange;
a.OldPropName = "hello"
p = 

  propertyChange with properties:

    NewPropName: "hello"

관련 항목