単一責任の原則とカプセル化を両立させるのに苦労しています。クラス間で責任を分割するには、多くのデータを公開する必要があるようです。例として、 というオブジェクトを考えてみましょうDataPoints。DataPointsとりわけ、x 座標と y 座標で埋められます。を満たす Generator クラスを作成できますDataPoints。ここで、これらのデータ ポイントをプロットするとします。明らかに、それは と呼ばれるクラスに由来する別の責任ですDataPointsPlotter。しかし、データをプロットするには、内部の x 座標と y 座標が何であるかを知る必要があります。両方を処理する単一のクラスでは、問題ありません。x と y は内部変数ですが、create() メソッドと print() メソッドの両方がそれらにアクセスできます。x と y を (おそらく getter/setter を介して) 公開するか、DataPoints構造体を Plotter クラスに追加しますが、x と y を取得するには内部に入る必要があります。DataPointsx と y を送信するクラスで Plotter のインスタンスを宣言できます。しかし、それはまだ露出です。
この例で、カプセル化に違反することなく、プロッターを使用して x と y をプロットするにはどうすればよいですか?