Main Content

클래스의 컴포넌트

클래스 구성 블록

MATLAB®은 클래스 정의 코드를 키워드로 구분하여 모듈식 블록으로 구성합니다. 모든 키워드는 이와 연결된 end 문을 가집니다.

  • classdef...end — 모든 클래스 컴포넌트의 정의

  • properties...end — 속성 이름 선언, 속성 특성 지정, 디폴트 값 할당

  • methods...end — 메서드 시그니처, 메서드 특성 및 함수 코드 선언

  • events...end — 이벤트 이름 및 특성 선언

  • enumeration...end — 열거형 클래스에 대한 열거형 멤버 및 열거형 값 선언

properties, methods, events, enumerationclassdef 블록 내에만 있는 키워드입니다.

클래스 정의 블록

classdef 블록은 파일 내에 classdef 키워드로 시작하고 end 키워드로 종료되는 클래스 정의를 담고 있습니다.

classdef (ClassAttributes) ClassName < SuperClass
   ...
end

예를 들어, 이 classdefhandle 클래스를 서브클래스화하는 MyClass라는 클래스를 정의합니다. 이 클래스는 봉인(Sealed)으로 정의되므로 이 클래스에서 상속할 수 없습니다.

classdef (Sealed) MyClass < handle
   ...
end

자세한 구문 정보는 classdef 항목을 참조하십시오.

Properties 블록

properties 블록은 옵션 초기값을 비롯하여 속성 정의를 담고 있습니다. 각각의 고유한 특성 지정값의 집합마다 별도의 블록을 사용하십시오. 각 properties 블록은 properties 키워드로 시작하고 end 키워드로 종료됩니다.

properties (PropertyAttributes)
   PropertyName size class {validators} = DefaultValue
end

예를 들어, 다음 클래스는 디폴트 값을 가지는 double형의 프라이빗 속성 Prop1을 정의합니다.

classdef MyClass
   properties (SetAccess = private)
      Prop1 double = 12
   end
   ...
end

자세한 내용은 속성값 초기화하기 항목을 참조하십시오.

Methods 블록

methods 블록은 클래스 메서드에 대한 함수 정의를 담고 있습니다. 각각의 고유한 특성 지정값의 집합마다 별도의 블록을 사용하십시오. 각 methods 블록은 methods 키워드로 시작하고 end 키워드로 종료됩니다.

methods (MethodAttributes)
   function obj = MethodName(arg1,...)
         ...
   end

예를 들어, 다음 클래스는 보호 메서드 MyMethod를 정의합니다.

classdef MyClass
   methods (Access = protected)
      function obj = myMethod(obj,arg1)
         ...
      end
   end
end

자세한 내용은 메서드 구문 항목을 참조하십시오.

MATLAB은 사용자가 메서드에 명시적으로 클래스의 객체를 전달해야 한다는 점에서 C++ 및 Java®와 같은 언어와는 다릅니다.

MyClass 예제에서, 클래스의 객체 obj와 함수 또는 점 구문을 사용하여 MyMethod를 호출합니다.

obj = MyClass;
r = MyMethod(obj,arg1);
r = obj.MyMethod(arg1);

자세한 내용은 메서드 호출 항목을 참조하십시오.

Events 블록

events 블록(각각의 고유한 특성 지정값의 집합마다 하나씩 있음)은 이 클래스가 선언하는 이벤트의 이름을 담고 있습니다. events 블록은 events 키워드로 시작하고 end 키워드로 종료됩니다.

classdef ClassName
   events (EventAttributes)
      EventName
   end
   ...
end

예를 들어, 다음 클래스는 ListenAccessprotected로 설정된 StateChange라는 이벤트를 정의합니다.

classdef EventSource
   events (ListenAccess = protected)
      StateChanged
   end
   ...
end

자세한 내용은 이벤트 항목을 참조하십시오.

특성 지정

특성 구문

특성은 클래스의 동작과 클래스 컴포넌트(속성, 메서드, 이벤트)를 수정합니다. 특성을 사용하면 복잡한 코드를 작성하지 않고도 유용한 동작을 정의할 수 있습니다. 예를 들어, SetAccess 특성은 프라이빗으로 설정하여 읽기 전용 속성을 생성하되, GetAccess 특성은 퍼블릭으로 설정된 상태로 그대로 둘 수 있습니다.

properties (SetAccess = private)
   ScreenSize = getScreenSize
end

모든 클래스 정의 블록(classdef, properties, methods, events)은 특정한 특성을 지원합니다. 모든 특성은 디폴트 값을 가집니다. 디폴트 값에서 변경하려는 경우에만 특성 값을 지정하십시오.

참고

컴포넌트 블록에는 특정한 특성의 값을 한 번만 지정하십시오.

특성 설명

지원되는 특성 목록은 다음 항목을 참조하십시오.

특성 값

특성 값을 지정할 경우 이 지정된 값이 정의 블록 내에 정의된 모든 컴포넌트에 영향을 미칩니다. 각기 다른 특성 설정을 사용하여 속성을 정의하려면 여러 properties 블록이 필요합니다. 여러 특성을 지정하는 경우 쉼표로 구분된 목록에 지정합니다.

properties (SetObservable = true) 
   AccountBalance
end

properties (SetAccess = private, Hidden = true)
   SSNumber
   CreditCardNumber
end

true/false 특성을 지정하는 더 단순한 구문

값이 true 또는 false인 특성을 지정할 때는 더욱 단순한 구문을 사용할 수 있습니다. 특성 이름 자체만으로도 true를 의미하고 이름에 NOT 연산자(~)를 추가하는 경우 false를 의미한다는 것을 암시합니다. 예를 들어, 정적 methods 블록을 정의하는 다음 두 방법은 서로 동일합니다.

methods (Static)
   ...
end

methods (Static = true)
   ...
end

마찬가지로 비정적 methods 블록을 정의하는 다음 3가지 방법도 서로 동일합니다. 논리값을 받는 모든 특성은 디폴트 값으로 false를 가지므로 특성을 생략하여 디폴트 동작을 가져올 수 있습니다.

methods
   ...
end

methods (~Static)
   ...
end

methods (Static = false)
   ...
end

열거형 클래스

열거형 클래스는 단일 유형 값을 나타내는 고정된 이름의 집합을 정의하는 특화된 클래스입니다. 열거형 클래스는 이 클래스에서 정의된 열거형 멤버를 포함하는 enumeration 블록을 사용합니다.

enumeration 블록은 enumeration 키워드로 시작하고 end 키워드로 종료됩니다.

classdef ClassName < SuperClass
   enumeration
      EnumerationMember
   end
   ...
end

예를 들어, 다음 클래스는 논리값 falsetrue를 나타내는 두 개의 열거형 멤버를 정의합니다.

classdef Boolean < logical
   enumeration
      No  (0)
      Yes (1)
   end
end

자세한 내용은 열거형 클래스 정의하기 항목을 참조하십시오.

관련 정보

간단한 클래스 생성하기

클래스 정의를 포함하는 폴더