델파이 클래스 예제

이 코드의 효과는 그림 2.1에서 볼 수 있듯이 마우스 클릭 위치에서 단추를 만드는 것입니다. 코드에서 Self 키워드를 Create 메서드의 매개 변수(구성 요소의 소유자를 지정)와 Parent 속성의 값으로 모두 사용하는 것을 확인합니다. 4장 «핵심 라이브러리 클래스»에서 이 두 요소(소유권 및 상위 속성)에 대해 설명하겠습니다. Delphi 리소스 인덱스 로 돌아가기 홈 페이지로 돌아가기 대부분의 다른 현대 OOP 언어(Java 및 C#포함)에서와 같이 Delphi의 클래스 유형 변수는 개체에 대한 저장소를 제공하지 않지만 메모리에 있는 개체에 대한 포인터 또는 참조일 뿐입니다. 개체를 사용하기 전에 새 인스턴스를 만들거나 변수에 기존 인스턴스를 할당하여 메모리를 할당해야 합니다. MyClassRef와 같은 클래스 참조 변수를 선언하면 특정 클래스 및 상속된 클래스에 할당할 수 있습니다. 따라서 TMyNewClass가 내 클래스의 상속 된 클래스인 경우 Delphi 구성 요소가 다른 개체와 크게 다르지 않다는 사실을 강조하기 위해 작성할 수도 있습니다 (그리고 Self 키워드의 사용을 시연하기 위해). 이 프로그램에는 구성 요소가없는 폼과 OnMouseDown 이벤트에 대한 처리기가 있으며, 이는 마우스 클릭의 위치를 매개 변수로 수신하기 때문에 선택했습니다 (OnClick 이벤트와 는 달리). 해당 위치에 단추 구성 요소를 만들려면 이 정보가 필요합니다. 메서드의 코드는 다음과 같습니다. 다음은 델파이에서 사용할 수 있는 기능에 대한 몇 가지 짧은 참고 사항입니다: System.TObject 클래스는 시스템 단위에 선언되어 있으며, 다른 모든 클래스의 궁극적인 조상입니다.

System.TObject는 기본 생성자 및 소멸자 등 소수의 메서드만 정의합니다. System.TObject 외에도 시스템 단위는 클래스 참조 유형 System.TClass: 엄격한 개인 가시성을 가진 클래스 멤버는 선언된 클래스 내에서만 액세스할 수 있음을 선언합니다. 동일한 단위 내에서 선언된 프로시저 또는 함수에는 표시되지 않습니다. 엄격하게 보호된 가시성을 가진 클래스 멤버는 선언된 클래스 내에서, 그리고 선언된 위치에 관계없이 모든 하위 클래스 내에서 볼 수 있습니다. 또한 인스턴스 멤버(클래스 또는 클래스 var 키워드 없이 선언된 인스턴스)가 엄격한 개인 또는 엄격한 보호로 선언되면 인스턴스가 표시되는 클래스의 인스턴스 외부에서 액세스할 수 없습니다. 클래스의 인스턴스는 동일한 클래스의 다른 인스턴스에서 엄격한 개인 또는 엄격하게 보호된 인스턴스 멤버에 액세스할 수 없습니다. 클래스 참조의 작동 방식을 더 잘 설명하기 위해 ClassRef라는 예제를 만들었습니다. 이 예제에 표시된 양식에는 폼의 위쪽 부분에 있는 패널 내부에 세 개의 라디오 단추가 있습니다. 이러한 라디오 단추 중 하나를 선택하고 양식을 클릭하면 단추 레이블에 표시된 라디오 단추, 푸시 버튼 및 편집 상자의 세 가지 유형의 새 구성 요소를 만들 수 있습니다.

Delphi는 메서드 오버로드를 지원합니다. 즉, 메서드를 오버로드 키워드로 표시하고 두 메서드의 매개 변수 목록이 충분히 다른 경우 이름이 같은 두 메서드를 가질 수 있습니다.