3

私のクラスでは、いくつかの Main クラスと共有クラスを持つプロジェクトを作成します。という 1 つの特定のメイン クラスで、Log.txt というファイルを直接処理するUserAppクラス のオブジェクトを作成します。UserInterface

DataStorageの中にクラスのオブジェクトを作成しますUserApp。これを使用して、String 値を に返すメソッドを呼び出しますUserApp。次に、その文字列値を取得しUserInterfaceて、ファイル Log.txt に書き込むメソッドに渡します。例えば:

public class UserApp {
    public static void main(String[] args) {
        UserInterface ui = new UserInterface();

        String[] commands = ui.readCommandLine();

        while(!ui.isFileEnd()){

            switch(command[0]){
            case "LI":  ui.displayThis(dataStorage.listById());
            break;
            case "QI":  ui.displayThis(dataStorage.queryById(command[0]));
            }
        }
    }
}

public class DataStorage {
    public String queryById(String id) {
        // Stuff the method does goes here

        return stringToReturn;
    }
}

私には、これが最もOOPな方法のように思えます。私は彼女にメールを送り、これが正しい使い方かどうか尋ねました。彼女はinui.displayThisの中で呼び出すように言いました... ということは、クラスの中でオブジェクトを作成するか、オブジェクトをパラメーターとして に渡す必要があるということです。彼女が言ったように実行すると、メソッドは文字列を返さず、無効になります。例えば:listById()DataStorageUserInterfaceDataStorageDataStoragelistById()listById()

public class UserApp {
    public static void main(String[] args) {

        String[] commands = ui.readCommandLine();

        while(!ui.isFileEnd()){

            switch(command[0]){
            case "LI":  dataStorage.listById(); // Here is the difference
            break;
            case "QI":  dataStorage.queryById(command[0]); // And here
            }
        }
    }
}

public class DataStorage {
    public void queryById(String id) {
        UserInterface ui = new UserInterface();
        // Stuff the method does goes here

        ui.displayThis(stringToDisplay);
    }
}

他にも switch ステートメントとメソッドがありますが、この質問に表示する必要はないと感じました。私はこれについていくつかの調査を行いましたが、私が集めたものから、これがスタイルの好みなのか、それとも一方の方法が他方よりも優れているのかはわかりません. 彼女が私にそうしてほしいと思っている方法は、OOP 言語ではうまくいきません。OOP 設計に実際に適しているのはどの方法ですか?

編集: 2 番目の部分は、実際には UserInterface オブジェクトをパラメーターとして渡します。これは、毎回オブジェクトを作成するよりも理にかなっているようです。それthisを行うためのより良い方法でしょうか?

4

4 に答える 4