Main Content

개별 파일 내 메서드

클래스 폴더

일부 예외 사항을 제외하고, 클래스 정의 파일과 별개로 다른 파일에 클래스 메서드를 정의할 수 있습니다(classdef 파일에 정의해야 하는 메서드 참조).

클래스 정의에 여러 개의 파일을 사용하려면 이름이 @ 문자로 시작하고 그 다음에 클래스의 이름이 오는 폴더(이를 클래스 폴더라고 함)에 이 클래스 파일들을 넣으십시오. 클래스 폴더의 부모 폴더는 MATLAB® 경로에 있어야 합니다.

클래스 폴더가 하나 이상의 네임스페이스 폴더에 포함된 경우 최상위 네임스페이스 폴더를 포함하는 폴더는 MATLAB 경로에 있어야 합니다.

예를 들어, 폴더 @MyClass에는 classdef 블록을 포함하고 있는 파일 MyClass.m이 포함되어야 하며, 기타 다른 메서드와 함수가 정의된 확장자가 .m인 파일들이 포함됩니다. 폴더 @MyClass는 다음과 같이 다수의 파일을 포함할 수 있습니다.

@MyClass/MyClass.m
@MyClass/subsref.m
@MyClass/subsasgn.m
@MyClass/horzcat.m
@MyClass/vertcat.m
@MyClass/myFunc.m

메서드 파일의 유형

MATLAB은 클래스 폴더에 있는 함수 파일을 클래스의 메서드로 처리합니다. 함수 파일은 MATLAB 코드(.m), 라이브 코드 파일 형식(.mlx), MEX 함수(플랫폼별 확장자) 및 P 코드 파일(.p)일 수 있습니다. 파일의 기본 이름은 유효한 MATLAB 함수 이름이어야 합니다. 유효한 함수 이름은 영문자로 시작하고 영문자, 숫자, 밑줄을 포함할 수 있습니다.

메서드를 C++ MEX 함수로 정의하는 방법에 대한 자세한 내용은 Use MEX Functions for MATLAB Class Methods 항목을 참조하십시오.

함수 파일에 메서드 정의하기

클래스 폴더 내에서 메서드를 개별 파일에 정의하려면 파일에 함수를 생성하십시오. 이 파일에는 method-end 키워드를 사용하지 마십시오. 여느 함수와 마찬가지로 함수 이름을 사용하여 파일의 이름을 지정하십시오.

myFunc.m 파일에서 메서드를 구현합니다.

function output = myFunc(obj,arg1,arg2)
   % code here
end

코드 가독성을 위해 classdef 파일의 methods 블록에 함수 시그니처를 선언하는 것이 좋습니다. 또한 메서드 특성을 설정하려면 함수 시그니처를 선언해야 합니다. classdef 파일에서 함수 시그니처를 선언하지 않으면 메서드의 모든 특성이 디폴트 값을 갖게 됩니다. 예를 들어, classdef에 시그니처가 선언되지 않은 메서드에는 Accesspublic으로 설정되고 Sealedfalse로 설정됩니다.

classdef 파일에서 메서드 특성 지정하기

개별 함수 파일에 정의하는 메서드에 대해 메서드 특성을 지정해야 하는 경우 classdef 파일의 methods 블록에 메서드 시그니처를 포함시키십시오. 이 methods 블록은 메서드에 적용되는 특성을 지정합니다.

예를 들어, 다음 코드에서는 methods 블록에서 Accessprivate으로 설정된 메서드를 보여줍니다. 메서드 구현은 별도의 파일에 있습니다. methods 블록에 function 키워드 또는 end 키워드를 포함시키지 마십시오. 입력 인수와 출력 인수를 보여주는 함수 시그니처만 포함시키십시오.

classdef MyClass
   methods (Access = private)
      output = myFunc(obj,arg1,arg2)
   end
end

@MyClass 폴더에서 이름이 myFunc.m인 파일에 함수를 정의합니다.

function output = myFunc(obj,arg1,arg2)
   ...
end

개별 파일 내 정적 메서드

정적 메서드를 생성하려면 메서드의 Static 특성을 true로 설정하고 classdef 파일의 정적 methods 블록에 함수 시그니처를 나열하십시오. 함수 이름과 함께 입력 인수와 출력 인수를 포함시킵니다. 예를 들면 다음과 같습니다.

classdef MyClass
...
   methods (Static)
      output = staticFunc1(arg1,arg2)
      staticFunc2
   end
   ...
end

각 함수를 동일한 함수 시그니처를 사용하여 개별 파일에 정의합니다. 예를 들어, 파일 @MyClass/staticFunc1.m에 다음을 지정합니다.

function output = staticFunc1(arg1,arg2)
   ...
end

그리고 @Myclass/staticFunc2.m에 다음을 지정합니다.

function staticFunc2
   ...
end

classdef 파일에 정의해야 하는 메서드

다음 메서드는 classdef 파일에 정의하십시오. 이러한 메서드는 개별 파일에 정의할 수 없습니다.

  • 클래스 생성자

  • 다음을 포함하여 이름에 점을 사용하는 모든 함수:

    • 클래스가 네임스페이스에 포함되어 있으므로 클래스 이름의 일부로 네임스페이스 이름을 사용해야 하는 변환기 메서드

    • 속성 set 액세스 메서드 및 get 액세스 메서드

관련 정보

관련 항목