Delphi 7에서 폼 상속을 활용한 객체지향 프로그래밍
객체지향 프로그래밍(OOP)의 핵심 개념 중 하나인 **상속(Inheritance)**은 Delphi 7에서도 강력하게 활용할 수 있습니다. 특히, 폼(Form)을 상속받아 공통 기능을 재사용하면 유지보수성과 확장성이 뛰어난 애플리케이션을 만들 수 있습니다. 하지만, 올바르게 사용하지 않으면 하드코딩 문제나 실수로 인해 코드가 복잡해질 수 있습니다. 이번 글에서는 Delphi 7에서 폼 상속을 구현하는 방법과 함께, 하드코딩을 피하는 전략, 그리고 흔히 하는 실수를 예방하는 방법을 살펴보겠습니다.
1. Delphi 7에서 폼 상속 구현하기
Delphi 7에서는 기존 폼을 부모 폼으로 설정하고, 이를 상속받아 자식 폼을 생성할 수 있습니다. 이를 통해 기본 UI 요소와 동작을 재사용할 수 있습니다.
예제: 기본 폼을 부모 폼으로 생성
먼저, 공통 기능을 가진 부모 폼을 만듭니다.
unit ParentFormUnit;
interface
uses
Forms, StdCtrls, Controls, Classes;
type
TParentForm = class(TForm)
btnAction: TButton;
procedure btnActionClick(Sender: TObject); virtual;
end;
implementation
procedure TParentForm.btnActionClick(Sender: TObject);
begin
ShowMessage('부모 폼의 동작 실행');
end;
end.
예제: 부모 폼을 상속받아 자식 폼 생성
부모 폼을 상속받아 동작을 변경할 수도 있습니다.
unit ChildFormUnit;
interface
uses
ParentFormUnit, Classes, Controls, StdCtrls, Forms;
type
TChildForm = class(TParentForm)
procedure btnActionClick(Sender: TObject); override;
end;
implementation
procedure TChildForm.btnActionClick(Sender: TObject);
begin
ShowMessage('자식 폼에서 동작을 변경');
end;
end.
이제 TChildForm은 TParentForm을 상속받아 btnActionClick의 동작을 변경할 수 있습니다.
2. 하드코딩을 피해야 하는 이유
폼 상속을 사용할 때, 자식 폼에서 부모 폼의 특정 UI 요소에 직접 접근하거나 특정 값을 코드에 고정하면 유지보수가 어려워집니다. 예를 들어, 버튼의 캡션을 직접 하드코딩하면 여러 자식 폼에서 중복 코드가 생길 수 있습니다.
잘못된 예시 (하드코딩된 값 사용)
procedure TChildForm.FormCreate(Sender: TObject);
begin
btnAction.Caption := '실행'; // 하드코딩된 문자열
end;
이렇게 하면 다국어 지원이 어려워지고, 같은 버튼을 다른 용도로 변경할 때 코드 수정이 필요합니다.
올바른 방법 (설정 값 사용)
procedure TChildForm.FormCreate(Sender: TObject);
begin
btnAction.Caption := Self.Caption + ' 실행'; // 유동적으로 변경 가능
end;
이렇게 하면 폼의 캡션에 따라 버튼의 텍스트도 동적으로 설정되므로 유지보수가 쉬워집니다.
3. 실수 방지 팁
폼 상속을 사용할 때 자주 하는 실수를 피하려면 다음 사항을 고려해야 합니다.
1) 부모 폼에서 필드를 private 대신 protected로 설정하기
부모 폼에서 UI 요소를 private으로 설정하면 자식 폼에서 접근할 수 없습니다. 따라서, 상속할 필요가 있는 경우 protected로 선언하는 것이 좋습니다.
잘못된 예시:
type
TParentForm = class(TForm)
private
btnAction: TButton; // 자식 폼에서 접근 불가능
end;
올바른 예시:
type
TParentForm = class(TForm)
protected
btnAction: TButton; // 자식 폼에서 접근 가능
end;
2) 생성자에서 부모 폼의 생성자를 호출하는 것을 잊지 않기
부모 폼이 생성될 때 필요한 초기화 코드가 있다면, 자식 폼에서도 이를 호출해야 합니다.
잘못된 예시:
constructor TChildForm.Create(AOwner: TComponent);
begin
ShowMessage('자식 폼 생성됨');
end;
이렇게 하면 부모 폼의 생성자가 호출되지 않으므로, 부모 폼에서 초기화한 값이 적용되지 않습니다.
올바른 예시:
constructor TChildForm.Create(AOwner: TComponent);
begin
inherited Create(AOwner); // 부모 폼의 생성자 호출
ShowMessage('자식 폼 생성됨');
end;
이렇게 하면 부모 폼의 동작을 유지하면서 자식 폼만의 기능을 추가할 수 있습니다.
4. 결론
Delphi 7에서 폼 상속을 올바르게 활용하면 중복 코드를 줄이고 유지보수가 쉬운 프로그램을 만들 수 있습니다. 하지만, 하드코딩을 피하고 부모-자식 관계를 명확하게 정의하지 않으면 유지보수가 어려워질 수 있습니다.
정리하자면:
- 부모 폼을 잘 설계하면 자식 폼에서 재사용성이 높아짐
- 하드코딩을 피하고 설정 값을 활용하여 유지보수성을 높임
- 부모 폼의 필드는 protected로 선언하여 자식 폼에서 재사용 가능하게 함
- 자식 폼 생성 시 inherited Create(AOwner)를 호출하여 부모 폼의 동작을 유지함
이제 폼 상속을 활용하여 더 효율적인 Delphi 7 애플리케이션을 만들어보세요! 🚀
'프로그래밍 > delphi' 카테고리의 다른 글
델파이 30주년: 과거와 현재, 그리고 미래를 보다 (0) | 2025.02.20 |
---|---|
DELPHI 이용 psftp (putty)로 sftp 접근 및 파일업로드 (0) | 2022.09.09 |
plink (putty)를 이용한 ssh 접근 및 스크립트 실행 (0) | 2022.09.08 |
DELPHI ODAC, Table of Object TYPE 변수이용 ORACLE Procedure 저장! 마지막 (0) | 2022.08.31 |
odac, Object-type변수를 이용한 데이터 저장(oracle, procedure, delphi) (1) | 2022.08.25 |
댓글