オブジェクトの作成,インスタンス化,破棄

提供: RAD Studio
移動先: 案内検索

オブジェクト モデルの利用:インデックス への移動

ボタンや編集ボックスなど,フォームデザイナで使用するオブジェクトの多くは設計時と実行時の両方で表示されます。一方,コモンダイアログボックスなど,実行時にしか表示されないオブジェクトもいくつかあります。また,タイマーやデータソースコンポーネントなど,実行時にはビジュアルな表現手段を一切持たないオブジェクトもあります。

独自のクラスを作成することもできます。たとえば,NameTitleHourlyPayRate の各プロパティを持つ TEmployee クラスを作成するとします。さらに,HourlyPayRate フィールドのデータを使用する CalculatePay メソッドを追加して,給与額を計算するとします。この場合,TEmployee 型は次のように宣言できます。

type
  TEmployee = class(TObject)
  private
    FName: string;
    FTitle: string;
    FHourlyPayRate: Double;
  public
    property Name: string read FName write FName;
    property Title: string read FTitle write FTitle;
    property HourlyPayRate: Double read FHourlyPayRate write FHourlyPayRate;
    function CalculatePay: Double;
  end;

上で定義したフィールド,プロパティ,メソッドだけでなく,TEmployeeTObject のメソッドをすべて継承しています。この例のような型宣言をユニットの interface 部か implementation 部に置き,次に,Create メソッド(TEmployeeTObject から継承したメソッド)を呼び出して新しいクラスのインスタンスを作成します。

var
  Employee: TEmployee;
begin
  Employee := TEmployee.Create;
end;

Create メソッドをコンストラクタと呼びます。コンストラクタは新しいインスタンスオブジェクトにメモリを割り当て,そのオブジェクトへの参照を返します。

フォーム上のコンポーネントは自動的に作成および破棄されます。ただし,オブジェクトをインスタンス化する独自のコードを記述した場合は,オブジェクトの破棄処理も自分で書かなければなりません。どのオブジェクトも TObject から Destroy メソッド(デストラクタという)を継承しますが,オブジェクトを破棄するには Free メソッドを使用するようにしてください。Free メソッドを使用すると,Destroy を呼び出す前に nil 参照かどうかをチェックすることができます。なお,Free メソッドも TObject から継承されています。次に例を示します。

Employee.Free;

上の例では,Employee オブジェクトを破棄して,メモリの割り当てを解除しています。

関連項目