ゲッター/セッターが正当化される時期についてこのページを読んでいましたが、OPは次のコードサンプルを提供しました。
class Fridge
{
int cheese;
void set_cheese(int _cheese) { cheese = _cheese; }
int get_cheese() { return cheese; }
}
void go_shopping(Fridge fridge)
{
fridge.set_cheese(fridge.get_cheese() + 5);
}
受け入れ答えの状態:
ちなみに、あなたの例では
Fridge
、putCheese()
andのtakeCheese()
代わりに、クラスに and メソッドを指定get_cheese()
しset_cheese()
ます。その後、まだカプセル化されています。
カプセル化は、名前をget / setからputCheese()
/に変更することによってどのように保持さtakeCheese()
れますか?
同じ答えでそれはまた述べています:
ゲッターとセッターを使用しても、カプセル化が壊れることはありません。カプセル化を解除するのは、何も考えずに、すべてのデータメンバー(Java lingoのすべてのフィールド)にゲッターとセッターを自動的に追加することです。
この場合、変数は1つだけなのでcheese
、チーズを取り出して冷蔵庫に戻したい場合があるため、この場合の取得/設定ペアは正当化されます。
putCheese
冷蔵庫にチーズを追加してtakeCheese
それを削除します-これらはオブジェクトフィールドのゲッターとセッター(低レベルのコンピュータープログラミングの抽象化)ではなく、(高レベルの)ドメイン指向の抽象化です。