Main Content

사용자 정의 클래스

클래스 정의란?

MATLAB® 클래스 정의는 클래스의 모든 인스턴스에 공통되는 모든 요소를 기술하는 용도로 쓰이는 템플릿입니다. 클래스 멤버는 클래스를 정의하는 속성, 메서드, 이벤트입니다.

다양한 클래스 멤버 정의를 나타내는 서브블록을 사용하여 코드 블록에서 MATLAB 클래스를 정의합니다. 이러한 블록에 대한 구문 정보는 클래스의 구성요소 항목을 참조하십시오.

클래스 멤버의 특성

특성(attribute)은 클래스의 동작과 클래스 정의 블록에 정의된 멤버를 수정합니다. 예를 들어, 메서드를 정적 메서드로 지정하거나 속성을 프라이빗 속성으로 지정할 수 있습니다. 다음 섹션에서는 다음과 같은 특성을 설명합니다.

클래스 정의는 클래스를 실제로 생성하지 않고도 클래스 멤버의 이름 또는 상속 관계와 같은 정보를 제공할 수 있습니다. Class Metadata를 참조하십시오.

특성 구문에 대한 자세한 내용은 특성 지정하기 항목을 참조하십시오.

클래스 종류

MATLAB 클래스에는 핸들 클래스와 값 클래스, 두 가지 종류가 있습니다.

  • 값 클래스는 독립된 값을 나타냅니다. 값 객체는 객체 데이터를 포함하며 이 데이터를 객체의 복사본과 공유하지 않습니다. MATLAB 숫자형은 값 클래스입니다. 함수에 전달되어 함수에 의해 수정되는 값 객체는 수정된 객체를 호출자에 반환해야 합니다.

  • 핸들 클래스는 객체 데이터를 참조하는 객체를 생성합니다. 인스턴스 변수의 복사본도 동일한 객체를 참조합니다. 함수에 전달되어 함수에 의해 수정되는 핸들 객체는 객체를 반환하지 않으며 호출자의 작업 공간에 있는 객체에 영향을 미칩니다.

자세한 내용은 핸들 클래스와 값 클래스 비교 항목을 참조하십시오.

객체 생성하기

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

객체 배열을 생성하는 방법에 대한 자세한 내용은 객체 배열을 만들고 초기화하기 항목을 참조하십시오.

클래스 계층 구조

클래스 계층 구조를 정의하는 방법에 대한 자세한 내용은 Hierarchies of Classes — Concepts 항목을 참조하십시오.

classdef 구문

클래스 정의는 시작 부분에 classdef 키워드를 사용하고 끝부분에 end 키워드를 사용하여 나타내는 코드 블록입니다. 파일은 하나의 클래스 정의만 포함할 수 있습니다.

다음 도식에서는 classdef 블록의 구문을 보여줍니다. classdef 키워드 앞에는 주석과 빈 라인만 올 수 있습니다.

Example syntax of classdef block

클래스 코드

다음은 입력 인수가 제공된 경우 속성값을 설정하는 생성자 메서드와 하나의 속성을 갖는 단순한 클래스 정의입니다.

classdef MyClass
   properties
      Prop
   end
   methods
      function obj = MyClass(val)
         if nargin > 0
            obj.Prop = val;
         end
      end
   end
end

MyClass의 객체를 생성하려면 클래스와 동일한 이름을 갖는 .m 파일에 클래스 정의를 저장하고 필요한 인수를 사용하여 생성자를 호출하십시오.

d = datestr(now);
o = MyClass(d);

점 표기법을 사용하여 속성값에 액세스합니다.

o.Prop
ans =

10-Nov-2005 10:38:14

MATLAB이 디폴트 객체를 생성할 수 있도록 생성자는 인수가 없는 구문을 지원해야 합니다. 자세한 내용은 입력 인수 없는 생성자 요구 사항 항목을 참조하십시오.

클래스 정의의 구성요소에 대한 자세한 내용은 클래스의 구성요소 항목을 참조하십시오.

관련 항목