これらの種類の空のプロパティを使用すると、指定された値をフィールドに割り当てるか、フィールド値を返すだけでコードが膨張します。これはカプセル化ではありません。
カプセル化とは、本質的に、フィールドが外部から完全に隠されている場合であり、外部のコードはフィールドの数さえ知らず、フィールドのタイプまたは値だけを認識します。次に、フィールドで実行する必要のある処理はすべて、クラスのパブリックメソッドによって実行されます。
例はメールクラスです。たとえば、ドメイン部分を別の文字列に分割する場合でも、電子メールアドレスをどの形式で保存するかは外の世界には関係ありません。クラスの内部動作。これは、どのように値がプライベートフィールドに配置されるかであり、外部に対して完全に不透明でなければなりません。
それは誰かがあなたにローンを要求するようなものです。その人は、あなたがお金をどこに、財布に、安全に、銀行口座に何を入れたかを知る必要はありません。その人はまたあなたがどれだけの合計お金を持っているかを知る必要はありません。クラスのあなたは、お金を取り出して与える責任があります。
これを行うには、すべてのフィールドをプライベートにします。私のメソッドの多くもプライベートです。メッセージパッシングで使用されるパブリックメソッドのほんの一握りです。また、値が参照によって、常に値によって返されることはないため、外部の世界では、メソッドのフィルターを通過せずにクラスのデータを変更することはできません。
プロパティは実際にはメソッドです。メソッドがあるときはいつでも、いくつかの独自の処理を行う必要があります。処理は論理であり、条件またはループ、あるいはその両方があります。条件はポリモーフィックな振る舞いの形で隠されているかもしれませんが、それでも条件です。実行する処理がない場合は、メソッドは必要ありません。