以下についてみなさんどう思われます?
1.【直接変数を読む場合】
type
Thoge = class
private
FX:Integer;
public
Property X:Intetger read FX write FX //直接変数
end;
2.【アクセサメッソドを使用する場合】
Interface
type
Thoge = class
private
FX:Integer;
procedure SetFX(FX:Integer);
function GetFX:Integer;
public
Property X:Intetger read GetFX write SetFX //直接変数
end;
Implementation
procedure SetFX(FX:Integer){
self.FX = FX;
end;
function GetFX:String{
Result := self.FX;
end;
この2つに何か違いがあると思われますか?
私は、2の必要性がいまいちわかりません。
> この2つに何か違いがあると思われますか?
カプセル化の点で2.の方が、保守性・再利用性に優れています。
例えば内部処理がFX から FY に変わっても
公開されているProperty X には影響が出ません。
またSetFX で値のチェックなども、アクセサで出来ますし
読み取り専用にすれば、変数が外部で変更されてしまうリスクも軽減できます。
オブジェクト指向の基本の1つです。
ご返信有難うございます。
>カプセル化の点で2.の方が、保守性・再利用性に優れています。
>例えば内部処理がFX から FY に変わっても
>公開されているProperty X には影響が出ません。
あっ、そうか!
内部処理でもカプセル化が必要なのですね。
貴重な体験有難うございました。
有難うございました
ツイート | ![]() |