클래스의 컴포넌트
클래스 구성 블록
MATLAB®은 클래스 정의 코드를 키워드로 구분하여 모듈식 블록으로 구성합니다. 모든 키워드는 이와 연결된 end
문을 가집니다.
classdef...end
— 모든 클래스 컴포넌트의 정의properties...end
— 속성 이름 선언, 속성 특성 지정, 디폴트 값 할당methods...end
— 메서드 시그니처, 메서드 특성 및 함수 코드 선언events...end
— 이벤트 이름 및 특성 선언enumeration...end
— 열거형 클래스에 대한 열거형 멤버 및 열거형 값 선언
properties
, methods
, events
, enumeration
은 classdef
블록 내에만 있는 키워드입니다.
클래스 정의 블록
classdef
블록은 파일 내에 classdef
키워드로 시작하고 end
키워드로 종료되는 클래스 정의를 담고 있습니다.
classdef (ClassAttributes) ClassName < SuperClass ... end
예를 들어, 이 classdef
는 handle
클래스를 서브클래스화하는 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
예를 들어, 다음 클래스는 ListenAccess
가 protected
로 설정된 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
예를 들어, 다음 클래스는 논리값 false
및 true
를 나타내는 두 개의 열거형 멤버를 정의합니다.
classdef Boolean < logical enumeration No (0) Yes (1) end end
자세한 내용은 열거형 클래스 정의하기 항목을 참조하십시오.