본문 바로가기
프로그래밍/delphi

Delphi7에서 폼 상속을 활용한 객체지향 프로그래밍

by 메르세데쓰 2025. 2. 17.
반응형

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 애플리케이션을 만들어보세요! 🚀

반응형

댓글