当初必要かと思って作成したがあまり必要なかった、ってインターフェースをチョイとリファクタリング。
DataTable, DataRegistry → DataManager
観測量の値を管理するインターフェースとして、DataTable, DataRegistry を作成しました。 これは、通常は値を設定できない箇所で値を設定出来ない様にするためだったんですが、継承関係などが無駄に複雑になるので、統一して DataManager というインターフェースにします:
public interface DataManager{ ObservableSet getObservableSet(int i); List<ObservableSet> getObservableSets(); void addObservableSet(ObservableSet obs); void removeObservableSet(ObservableSet obs); boolean contains(String name); Class<?> getDatatype(String name); List<String> getDataEntries(); Object getData(String name) throws ObservationException; void setData(String name, Object value); void resetData(); }
ObservableSet に対するアクセッサ・メソッドも付け加えました。 禁止されている箇所での値の設定を防止するためには、例外を投げるなど、実装でナントカすることにしましょう。
これに伴って、DataAccessor インターフェースのメソッドも少し改名します:
public interface DataAccessor { void setDataManager(DataManager dm); }
Device
Device インターフェースは削除します。 このインターフェースを拡張していたインターフェース はDataOutputter のみだったので、Device インターフェースに定義されていたメソッド prepare(), dispose() はこの DataOutputter インターフェースに直接定義します:
public interface DataOutputter extends DataAccessor, ComponentAccessor{ List<String> getEntries(); void addEntry(String entry); void removeEntry(String entry); Set<OutputTiming> getOutputTimings(); void addOutputTiming(OutputTiming timing); void removeOutputTiming(OutputTiming timing); void setOutputTiming(String s); void prepare()throws SimulationException; void prepareForIteration()throws SimulationException; void output()throws SimulationException; void disposeForIteration()throws SimulationException; void dispose()throws SimulationException; }
prepareForIteration(), disposeForIteration() メソッドを新たに定義しています。 これらについては後日。