手続きでのインターフェイスの使用
インターフェイスの使用 への移動
インターフェイスを使用すると、オブジェクトを特定の基底クラスから派生させなくてもオブジェクトを処理できる汎用の手続きを記述できます。前に定義した IPaint インターフェイスと IRotate インターフェイスを使って、次のような手続きを記述できます。
procedure PaintObjects(Painters: array of IPaint); var I: Integer; begin for I := Low(Painters) to High(Painters) do Painters[I].Paint; end; procedure RotateObjects(Degrees: Integer; Rotaters: array of IRotate); var I: Integer; begin for I := Low(Rotaters) to High(Rotaters) do Rotaters[I].Rotate(Degrees); end;
RotateObjects では、オブジェクトを塗りつぶす方法をオブジェクト自体が知っている必要はなく、PaintObjects でも、オブジェクトを回転させる方法をオブジェクト自体が知っている必要はありません。こうすることにより、この汎用手続きは、TFigure クラスに対してのみ機能するように記述した場合よりも用途が広がります。