Q&A

  • 함수 선언시! function 키워드 앞에 class가 붙는 이유
제가 보는 소스 중에 아래와 같이 함수 선언시에 function 키워드 앞에 class 키워드가 있는데 어떤 경우에 class 키워드를 function 키워드에 붙이는가요?



Class function TMakeChat.Execute(Owner : TComponent; Category:string): TMakeChat;



이런 선언의 의미가 먼지 알려주세요?





4  COMMENTS
  • Profile
    innover 2001.12.20 21:38
    class function 이라는것은 인스턴스 없이도 실행이 가능한 펑션을 말합니다.

    해당 클래스에 대한 일반적인 작업을 하는 펑션을 정의할 수 있죠.

    가령



    function TMyClass.MyFunction: string;

    class function TMyClass.MyClassFunction: string;



    이 두개가 있다고 치면



    보통 펑션은 다음과 같이 쓰지요.

    var

    Class: TMyClass;



    ShowMessage(Class.Myfunction);



    클래스 펑션은 다음과 같이 씁니다.



    ShowMessage(TClass.MyClassfunction);



    물론 인스턴스로 써줘도 작동합니다.



    바로 클래스형.함수명 을 쓸 수 있지요

    대신에 인스턴스를 사용하면 안됩니다. 자신의 멤버변수도 쓸 수가 없죠(원래 OOP개념에는 클래스멤버변수가 있어서 그것만을 쓸 수 있지만 오브젝트 파스칼에는 클래스멤버변수를 지원하지 않습니다.).

    결국 오브젝트 파스칼(델파이)에서는 단지 그 클래스와 관련돼있다는것을 나타내는것을 빼고는 일반 펑션과 별반 다를 것이 없습니다.

    설명이 제대로 되었을랑가 모르겠네요

    그럼..



    파스칼 wrote:

    > 제가 보는 소스 중에 아래와 같이 함수 선언시에 function 키워드 앞에 class 키워드가 있는데 어떤 경우에 class 키워드를 function 키워드에 붙이는가요?

    >

    > Class function TMakeChat.Execute(Owner : TComponent; Category:string): TMakeChat;

    >

    > 이런 선언의 의미가 먼지 알려주세요?

    >

    >

  • Profile
    파스칼 2001.12.28 03:25
    답변 주셔서 감사합니다.^^;;





    innover wrote:

    > class function 이라는것은 인스턴스 없이도 실행이 가능한 펑션을 말합니다.

    > 해당 클래스에 대한 일반적인 작업을 하는 펑션을 정의할 수 있죠.

    > 가령

    >

    > function TMyClass.MyFunction: string;

    > class function TMyClass.MyClassFunction: string;

    >

    > 이 두개가 있다고 치면

    >

    > 보통 펑션은 다음과 같이 쓰지요.

    > var

    > Class: TMyClass;

    >

    > ShowMessage(Class.Myfunction);

    >

    > 클래스 펑션은 다음과 같이 씁니다.

    >

    > ShowMessage(TClass.MyClassfunction);

    >

    > 물론 인스턴스로 써줘도 작동합니다.

    >

    > 바로 클래스형.함수명 을 쓸 수 있지요

    > 대신에 인스턴스를 사용하면 안됩니다. 자신의 멤버변수도 쓸 수가 없죠(원래 OOP개념에는 클래스멤버변수가 있어서 그것만을 쓸 수 있지만 오브젝트 파스칼에는 클래스멤버변수를 지원하지 않습니다.).

    > 결국 오브젝트 파스칼(델파이)에서는 단지 그 클래스와 관련돼있다는것을 나타내는것을 빼고는 일반 펑션과 별반 다를 것이 없습니다.

    > 설명이 제대로 되었을랑가 모르겠네요

    > 그럼..

    >

    > 파스칼 wrote:

    > > 제가 보는 소스 중에 아래와 같이 함수 선언시에 function 키워드 앞에 class 키워드가 있는데 어떤 경우에 class 키워드를 function 키워드에 붙이는가요?

    > >

    > > Class function TMakeChat.Execute(Owner : TComponent; Category:string): TMakeChat;

    > >

    > > 이런 선언의 의미가 먼지 알려주세요?

    > >

    > >

  • Profile
    이경문 2001.12.21 07:44
    참고임돠.

    OOP에서는 meta class라고 하고

    C++에서는 static이라는 예약어를 붙인답니다.

    java에서도 사용되는 데 모두 ::를 앞에 붙여서 어느 class의 method를 사용하는지를 명시한답니다.

    C#은 어떻게 되는 지 모르겠네요....



    innover wrote:

    > class function 이라는것은 인스턴스 없이도 실행이 가능한 펑션을 말합니다.

    > 해당 클래스에 대한 일반적인 작업을 하는 펑션을 정의할 수 있죠.

    > 가령

    >

    > function TMyClass.MyFunction: string;

    > class function TMyClass.MyClassFunction: string;

    >

    > 이 두개가 있다고 치면

    >

    > 보통 펑션은 다음과 같이 쓰지요.

    > var

    > Class: TMyClass;

    >

    > ShowMessage(Class.Myfunction);

    >

    > 클래스 펑션은 다음과 같이 씁니다.

    >

    > ShowMessage(TClass.MyClassfunction);

    >

    > 물론 인스턴스로 써줘도 작동합니다.

    >

    > 바로 클래스형.함수명 을 쓸 수 있지요

    > 대신에 인스턴스를 사용하면 안됩니다. 자신의 멤버변수도 쓸 수가 없죠(원래 OOP개념에는 클래스멤버변수가 있어서 그것만을 쓸 수 있지만 오브젝트 파스칼에는 클래스멤버변수를 지원하지 않습니다.).

    > 결국 오브젝트 파스칼(델파이)에서는 단지 그 클래스와 관련돼있다는것을 나타내는것을 빼고는 일반 펑션과 별반 다를 것이 없습니다.

    > 설명이 제대로 되었을랑가 모르겠네요

    > 그럼..

    >

    > 파스칼 wrote:

    > > 제가 보는 소스 중에 아래와 같이 함수 선언시에 function 키워드 앞에 class 키워드가 있는데 어떤 경우에 class 키워드를 function 키워드에 붙이는가요?

    > >

    > > Class function TMakeChat.Execute(Owner : TComponent; Category:string): TMakeChat;

    > >

    > > 이런 선언의 의미가 먼지 알려주세요?

    > >

    > >

  • Profile
    파스칼 2001.12.28 03:58
    답변 주셔서 감사합니다.^^;;



    제가 델파이(파스칼)을 접한지 얼마 안되었습니다. ^^;;



    참고로 java에서는 static을 나타낼 때 영역결정연산자(::)를 사용하지 않습니다.^^;;

    일반적인 클래스명.멤버(함수) 형태로 나타냅니다.





    이경문 wrote:

    > 참고임돠.

    > OOP에서는 meta class라고 하고

    > C++에서는 static이라는 예약어를 붙인답니다.

    > java에서도 사용되는 데 모두 ::를 앞에 붙여서 어느 class의 method를 사용하는지를 명시한답니다.

    > C#은 어떻게 되는 지 모르겠네요....

    >

    > innover wrote:

    > > class function 이라는것은 인스턴스 없이도 실행이 가능한 펑션을 말합니다.

    > > 해당 클래스에 대한 일반적인 작업을 하는 펑션을 정의할 수 있죠.

    > > 가령

    > >

    > > function TMyClass.MyFunction: string;

    > > class function TMyClass.MyClassFunction: string;

    > >

    > > 이 두개가 있다고 치면

    > >

    > > 보통 펑션은 다음과 같이 쓰지요.

    > > var

    > > Class: TMyClass;

    > >

    > > ShowMessage(Class.Myfunction);

    > >

    > > 클래스 펑션은 다음과 같이 씁니다.

    > >

    > > ShowMessage(TClass.MyClassfunction);

    > >

    > > 물론 인스턴스로 써줘도 작동합니다.

    > >

    > > 바로 클래스형.함수명 을 쓸 수 있지요

    > > 대신에 인스턴스를 사용하면 안됩니다. 자신의 멤버변수도 쓸 수가 없죠(원래 OOP개념에는 클래스멤버변수가 있어서 그것만을 쓸 수 있지만 오브젝트 파스칼에는 클래스멤버변수를 지원하지 않습니다.).

    > > 결국 오브젝트 파스칼(델파이)에서는 단지 그 클래스와 관련돼있다는것을 나타내는것을 빼고는 일반 펑션과 별반 다를 것이 없습니다.

    > > 설명이 제대로 되었을랑가 모르겠네요

    > > 그럼..

    > >

    > > 파스칼 wrote:

    > > > 제가 보는 소스 중에 아래와 같이 함수 선언시에 function 키워드 앞에 class 키워드가 있는데 어떤 경우에 class 키워드를 function 키워드에 붙이는가요?

    > > >

    > > > Class function TMakeChat.Execute(Owner : TComponent; Category:string): TMakeChat;

    > > >

    > > > 이런 선언의 의미가 먼지 알려주세요?

    > > >

    > > >