オブジェクト指向の設計で質問なのです。
以下の要求仕様があるのですが、これを上手くまとめる方法ってないでしょうか?
 ・あるクラスに状態を表す変数2つと、状態以外の変数が10個ぐらいある。

 ・状態以外の変数は、一部自動計算される。
  どれが自動計算されるかは、状態を表す変数によって変わる。

 ・自動計算された変数は、クラス外部から設定不可。
  自動計算されない変数は、クラス外部から設定可能。
と、状態によって外部から変更して良い変数が変わる仕様です。

間違った使い方(外部から設定できない変数への値の設定)を防ぎたいのですが良い方法はないでしょうか?
安全のためにコンパイルに静的にチェックしたいのですが、やり方が思いつかず
今は一枚板のクラスにしてASSERTでチェックしています。