Javaで書かれたシミュレーションを適応させています。私の限られたバックグラウンドはすべて C++ です。
シミュレーションの現在の実装は、 というクラスに依存していParametersます。クラスのインスタンスは のSimulation属性を参照しますがParameters、インスタンス化されることはないと思います。Parametersクラスには次のような構造があります
public class Parameters {
public static int day = 0;
public static final int endDay = 365;
....
public static int getDate() {
return day;
}
}
のインスタンスにはSimulation、たとえば への参照がありますParameters.day。
現在、 のすべての属性Parametersはハードコーディングされています。コマンドライン引数でそれらのいくつかを変更できるようにする必要があります。たとえば、ある種の関数endDayを使用して別の設定ができるようにしたいと考えています。Parameters::setEndDay(int customDay)
私が最初に考えたのは、インスタンス ( Parameters parameters = new Parameters()) を作成し、クラスを完全に書き直して、Parametersそのすべての属性を非公開にし、アクセサー関数を介してのみアクセスできるようにすることでした。このアプローチはあまり効率的ではないことを懸念しています。Parametersこれまでのところ、クラスのインスタンスを作成し、それをSimulation時々参照しながらのインスタンスに渡すというハイブリッド アプローチを試してきましたParameters.day(これは変更する必要はありません)。
問題の 1 つは、私が Java のクラス特権についてよくわかっていないことです。
提案をいただければ幸いです。