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

속성 정의

정의 가능한 항목

다음과 같은 방법으로 속성 정의의 측면을 제어할 수 있습니다.

  • 각 속성의 디폴트 값을 개별적으로 지정합니다. 속성의 디폴트 값 항목을 참조하십시오.

  • 클래스 생성자에 속성값을 할당합니다. 생성자에서 속성값 할당하기 항목을 참조하십시오.

  • 상수 값으로 속성을 정의합니다. Named Values 항목을 참조하십시오.

  • 블록별로 속성의 특성 값을 할당합니다. 속성 특성(Attribute) 항목을 참조하십시오.

  • 속성이 설정되거나 쿼리될 때 실행되는 메서드를 정의합니다. 속성 액세스 메서드 항목을 참조하십시오.

  • 속성값의 클래스와 크기를 정의합니다. 속성값 유효성 검사 항목을 참조하십시오.

  • 값을 저장하지 않지만 값이 다른 속성에 종속되는 속성을 정의합니다. 속성 유형 항목을 참조하십시오.

참고

MATLAB® 코드에는 항상 대/소문자를 구분하는 속성 이름을 사용해야 합니다. 속성의 이름은 클래스의 이름과 동일할 수 없습니다.

속성값 초기화하기

속성값을 초기화하는 기본적인 접근 방식에는 다음 두 가지가 있습니다.

  • 속성 정의 — MATLAB이 표현식을 한 번만 실행하고 각 인스턴스의 속성에 동일한 값을 할당합니다.

  • 클래스 생성자 — MATLAB이 각 인스턴스에 대해 대입식을 실행하며, 이를 통해 각 인스턴스는 고유한 값을 가질 수 있습니다.

속성의 디폴트 값으로 할당하는 표현식의 실행에 대한 자세한 내용은 When MATLAB Evaluates Expressions 항목을 참조하십시오.

속성의 디폴트 값

properties 블록 내에서 개별 속성의 디폴트 값을 제어할 수 있습니다. 값 또는 MATLAB 표현식으로 디폴트 값을 할당합니다. 표현식은 변수를 참조할 수 없습니다. 예를 들면 다음과 같습니다.

  • Prop1 — 값 할당 안 함. 빈 [] 디폴트 값이 생성됨

  • Prop2 — 문자형 배열을 디폴트 값으로 할당

  • Prop3 — 표현식의 결과를 디폴트 값으로 할당

classdef ClassName
   properties
      Prop1
      Prop2 = 'some text'
      Prop3 = sin(pi/12)
   end
end

클래스 정의에서 디폴트 속성값을 지정하지 않은 경우 MATLAB은 속성값을 빈 double형([])으로 설정합니다.

참고

속성의 디폴트 값에 대한 계산은 값이 처음으로 필요해진 경우에만 수행되며 MATLAB이 클래스를 최초로 초기화할 때 한 번만 수행됩니다. MATLAB은 클래스의 인스턴스를 생성할 때마다 표현식을 다시 실행하지 않습니다.

속성의 디폴트 값으로 할당하는 표현식의 실행에 대한 자세한 내용은 Evaluation of Expressions in Class DefinitionsProperties Containing Objects 항목을 참조하십시오.

생성자에서 속성값 할당하기

클래스 생성자에서 속성에 값을 할당하려면 생성자가 반환하는 객체(출력 변수 obj)를 참조하십시오.

classdef MyClass
   properties
      Prop1
   end
   methods
      function obj = MyClass(intval)
         obj.Prop1 = intval;
      end
   end
end

클래스 생성자에서 속성을 할당하는 경우 MATLAB은 생성하는 각 객체에 대해 대입문을 실행합니다. 각 객체가 해당 속성에 대해 고유한 값을 포함하도록 하려면 생성자에서 속성값을 할당하십시오.

예를 들어, 이러한 객체를 하나씩 생성할 때마다 그 객체의 속성에 고유한 핸들 객체를 할당하려 한다고 가정하겠습니다. 생성자에서 속성에 핸들 객체를 할당하십시오. 핸들 객체 생성자를 호출하여 클래스의 각 인스턴스와 함께 고유한 핸들 객체를 생성하십시오.

생성자 메서드에 대한 자세한 내용은 생성자에서 객체 참조하기 항목을 참조하십시오.

속성을 고유한 값으로 초기화하기

MATLAB은 MATLAB이 클래스 정의를 불러올 때의 단 한 번만 속성을 지정된 디폴트 값으로 할당합니다. 따라서 핸들 클래스 생성자로 속성값을 초기화하면 MATLAB이 이 생성자를 한 번만 호출하므로 모든 인스턴스가 동일한 핸들 객체를 참조하게 됩니다. 객체를 생성할 때마다 속성값이 핸들 객체의 새 인스턴스로 초기화되도록 하려면 생성자에서 속성값을 할당하십시오.

속성 특성(Attribute)

모든 속성은 속성 동작의 특정한 측면을 수정하는 특성(attribute)을 갖습니다. 지정한 특성은 특정 properties 블록 내의 모든 속성에 적용됩니다. 예를 들면 다음과 같습니다.

classdef ClassName
   properties (PropertyAttribute = value)
      Prop1
      Prop2
   end
end

예를 들어, 동일한 클래스 정의에 포함된 메서드만 Salary 속성과 Password 속성을 수정하고 쿼리할 수 있습니다.

classdef EmployeeInfo
   properties (Access = private)
      Salary
      Password
   end
end

이러한 제한이 존재하는 이유는 클래스가 Access 특성이 private으로 설정된 properties 블록에 이러한 속성을 정의하기 때문입니다.

속성 특성(Attribute)

지정할 수 있는 속성 특성에 대한 설명은 속성 특성(Attribute) 항목을 참조하십시오.

속성 액세스 메서드

MATLAB은 속성값을 설정하거나 쿼리할 때마다 속성 액세스 메서드를 호출합니다. 다음 구문을 사용하는 아무런 특성을 지정하지 않는 methods 블록에 속성 set 액세스 메서드 또는 get 액세스 메서드를 정의합니다.

methods

   function obj = set.PropertyName(obj,value)
      ...
   end

   function value = get.PropertyName(obj)
      ...
   end

end

MATLAB은 속성의 정의 블록에 지정된 디폴트 값을 할당할 때 속성 set 액세스 메서드를 호출하지 않습니다.

예를 들어, set.Password 메서드는 이름이 Password인 속성에 할당된 문자형 배열의 길이를 테스트합니다. 속성에 할당된 값의 문자 수가 7자 미만인 경우 MATLAB은 오류를 반환합니다. 그렇지 않은 경우, MATLAB은 지정된 값을 속성에 할당합니다.

function obj = set.Password(obj,pw)
   if numel(pw) < 7
      error('Password must have at least 7 characters')
   else
      obj.Password = pw;
end

속성 액세스 메서드에 대한 자세한 내용은 속성 액세스 메서드 항목을 참조하십시오.

변수를 사용하여 객체 속성 참조하기

MATLAB은 다음과 같은 형식의 표현식을 사용하여 char형 변수에서 속성 이름을 확인할 수 있습니다.

object.(PropertyNameVar)

여기서 PropertyNameVar은 유효한 객체 속성의 이름을 포함하는 변수입니다. 속성 이름을 인수로 전달할 때 이 구문을 사용하십시오. 예를 들어, getPropValue 함수는 KeyType 속성의 값을 반환합니다.

PropName = 'KeyType';
function o = getPropValue(obj,PropName)
   o = obj.(PropName);
end

관련 항목