종속 속성에 대한 get 메서드 및 set 메서드
종속 속성은 데이터를 저장하지 않습니다. 종속 속성의 값은 다른 값(예: Dependent 이외의 속성의 값)에 종속됩니다. 다음 구문을 사용하여 종속 속성을 정의합니다.
properties (Dependent) PropertyName end
종속 속성은 데이터를 저장하지 않으므로 속성이 쿼리될 때 속성의 값을 결정할 수 있으려면 get 메서드(get.
)를 정의해야 합니다. PropertyName
종속 속성이 set 메서드(set.
)를 가질 수도 있지만 이러한 메서드는 사실상 종속 속성의 값을 설정할 수 없습니다. 그러나 set 메서드는 다른 코드를 포함할 수 있습니다. 예를 들어, 종속 속성과 관련된 속성의 값을 설정할 수 있습니다.PropertyName
get 메서드 및 set 메서드를 정의하는 방법에 대해 소개하는 내용은 속성 get 및 set 메서드 항목을 참조하십시오.
종속 속성에 대해 get 메서드 정의하기
Account
클래스는 금액을 미국 달러로 저장하고 이 값을 달러화, 유로화, 엔화의 세 가지 통화 중 하나로 반환할 수 있습니다. 변환된 값은 종속 속성 Balance
로 표현됩니다. get.Balance
메서드는 USDollarAmount
와 Currency
를 사용하여 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"