오브젝트 파스칼에서 오브젝트는 레코드형 변수와 마찬가지로 여러 개의 요소들로 이루어진 자료들의 모음이다. 레코드에서 각각의 변수 요소들을 필드라고 하듯이 오브젝트에 대해서도 각각의 변수 요소들을 필드라고 한다. 오브젝트의 필드들은 적절하게 외부에 가려져 있으며, 보통 이들을 직접 참조하는 대신 오브젝트에서 제공하는 프로시저를 호출하여 작업을 처리한다. 이런 프로시저들을 메소드라 하고, 오브젝트는 이와 같이 상태를 보존하는 필드와 동작을 행하는 메소드로 구성된다. 또한 필드에 대한 무책임한 참조로부터 보호하기 위해 적절한 참조 방법을 제공하기도 하는데, 이를 프로퍼티라고 하고, 한 클래스에 속한 필드, 메소드, 프로퍼티 등을 그 클래스의 멤버라고 한다.
클래스는 레코드형과 마찬가지로 일종의 자료형이다. 클래스형으로 정의된 변수는 그 자체로 아직 오브젝트가 되는 것은 아니다. 오브젝트가 되어 메모리에 자리잡기 위해서는 인스턴스화하는 작업이 필요한데, 이를 생성(Create)이라고 한다. 이렇게 생성된 오브젝트를 오브젝트 또는 인스턴스라고 부른다. 오브젝트는 클래스에서 정의한 필드, 프로퍼티, 메소드를 가지고 있게 된다. 오브젝트의 사용이 끝나면 메모리에서 삭제하는 것을 파괴(Destroy)한다고 한다.
클래스를 선언할 때 항상 그 클래스의 모든 멤버들을 선언해야 하는 것은 아니다.
기존에 선언된 클래스를 계승받아 새로운 클래스에 필요한 멤버들만 선택해서 선언하면 된다. 이때, 새로 선언된 클래스를 후손(Descendant)이라 하고, 계승받은 기존의 클래스를 조상(Ancestor)이라고 부른다. 모든 클래스의 선언시에 항상 계승받을 선조 클래스를 지정하게 되어 있으면 생략하면 기본적으로 Tobject 클래스로부터 직접 계승받는 것으로 된다.
Tobject 클래스는 모든 클래스의 가장 높은 조상이 되며, 모든 오브젝트가 갖춰야 할 기본적인 기능들을 구현해 놓은 클래스이다. 후손 클래스는 새로운 멤버를 계속 추가할 수만 있고 제거할 수는 없다.
클래스의 선언은 다른 형 선언과는 달리 유닛이나 프로그램의 가장 바깥에서만 행할 수 있다. 보통 유닛의 인터페이스 절에 선언하게 된다.
Type TMyClass = class(TObject) // TMyClass 클래스의 선언-----------------(1) … end; … var MyObject : TMyClass; // TMyClass형의 변수 MyObject선언------(2) … MyObject.Free; //
MyObject의 파괴--------------------------(4)
TMyClass는 TObject로 부터 계승받았다. (1) 그러므로 선조는 TObject가 되고 후손은
TMyClass가 된다. 그리고 (2)에서 TmyClass형으로 변수
MyObject를 선언하였다. 아직까지 오브젝트가 생성된 것은 아니다. 단지 선언만 했을 뿐이다. (3)에서 마침내 생성을 시켜 주었다. 그리고 필요가 없게 되면 (4)에서처럼 파괴를 시켜주어야 한다. TMyClass형의 Create라는 메소드는 위에서 만들어 주지 않았다. 그러면 어떻게 사용할 수 있었을까?
'공부방 > Delphi' 카테고리의 다른 글
[델파이] 폼 생성과 해제 (0) | 2010.07.15 |
---|---|
[델파이] 클래스의 가시성 (0) | 2010.07.15 |
[델파이] 프로시저와 함수 (1) | 2010.07.14 |
[델파이] Case 문법 (0) | 2010.07.14 |
[델파이] 기본 컴포넌트 (0) | 2010.07.14 |