1

これは非常に初歩的な一般的な質問ですが、非常に簡単です。オブジェクトを作成するためにクラスを作成することは理解していますが、それが別のクラスを作成する必要がある唯一の理由でしょうか? 私が質問する理由は、私が受講しているコースでは、すべての学生が個別に構築しなければならなかったプログラムの設計について発表したからです。多くの学生は 5 ~ 10 クラスでしたが、私は 2 クラスしかありませんでした。どちらのオプションもうまく機能しているようです。

これが主観的な質問である場合、プログラムを作成する最も受け入れられている方法は何ですか。業界のリーダーは、100% 必要ではないクラスを追加することについて何と言っていますか?

4

3 に答える 3

2

以下にいくつかのガイドラインを示します。

単一責任の原則

単一責任の原則では、基本的に、各クラスは 1 つのことだけを行う必要があります。2 つ以上の処理を行うクラスがある場合は、それを複数のクラスに分割します。

クラスを確認してください。ユーザー入力の取得、計算の実行、結果の出力など、多くのことを行うクラスはありますか? その場合は、おそらくそれを複数のクラスに分割したいと思うでしょう。

抽象化

OOP における抽象化は非常に重要です。これは基本的に、現実世界のものをクラスまたはインターフェースにするプロセスです。たとえば、計算アプリを実行している場合Calculatorは、実際の計算を行うクラスを作成します。CalculatorWindowボタンイベントをリッスンするなど、電卓のウィンドウを管理するクラスもあります。このクラスは、ユーザー入力をCalculatorオブジェクトに与え、結果を計算させることができます。

デザインパターン

世の中にはたくさんのデザインパターンがあります。これらの設計パターンを見ることで、クラスがどのように相互作用するかを確認でき、できれば新しいクラスをいつ作成するかがわかります。

于 2016-12-12T07:47:02.747 に答える
1

これに対する万能の答えはありません。


これが主観的な質問である場合、プログラムを作成する最も受け入れられている方法は何ですか。

明らかに、その質問も主観的です。(私たちがあなたのために調査をすることを期待していませんか?)

業界のリーダーは、100% 必要ではないクラスを追加することについて何と言っていますか?

ビル・ゲイツやラリー・エリソンのようなものですか?

彼らはおそらく何も言わないでしょう。

確かに、せっけん箱に立ち上がって、XYZが「ベストプラクティス」などであると大きな権威を持って言う人がいます. しかし、ほとんどの場合、これらの声明は (せいぜい) 事例証拠/個人的な経験に基づいています。言い換えれば、それらは本当に事実を装った意見です.


結論: 正解は 1 つではありません。したがって、次のことを学びます。

  • あなた(およびあなたのチーム)にとって何が最適か、そして
  • それについてあまり心配する価値はありません...あなたがしていることが「あなたのために働く」という条件で。

(「うまくいかない」2 つの極端な例は、クラスが非常にきめ細かく、ボイラープレートを書いたり読んだりするのにすべての時間を費やしている場合、またはクラスが非常に大きく複雑で、もはや理解できない場合です。)

于 2016-12-12T07:47:53.230 に答える
1

さまざまなタスクを実行するために、さまざまなクラスが使用されます。これにより、コードの重複が減り、コードの再利用が増えます。これにより、設計パターンに従って重要な問題を簡単に解決できます。これは良い習慣です。

簡単な例を次に示します。

データを並べ替える。

//Without using multiple class
public class A{
  public static void main(String[] args){
     int array[] = {1,6,1,8,34,5};
     for(int i=0; i< array.length; i++){
        //your procedure to sort the array
     }
     //other operations;
     //Now you need to sort another new array (new_array[])
     int new_array[] = {1,6,1,8,34,5};
     for(int i=0; i< new_array.length; i++){
        //your procedure to sort the new_array
     }
  }
}

この例では、2 つの for ループを使用して 2 つの異なる配列をソートしました。複数のクラスの例を見てみましょう

public class A{
  public static void main(String[] args){
     int array[] = {1,6,1,8,34,5};
     
     int my_array[] = Opertaion.sortArray(array);     

     //other operations;
     //Now you need to sort another new array (new_array[])
     
     int new_array[] = {1,6,1,8,34,5};
     int my_new_array[] = Opertaion.sortArray(new_array); 
  }
}

public class Opertaion{
   public static int[] sortArray(int[] array){
     for(int i=0; i< array.length; i++){
        //your procedure to sort the array
     }
     return array;
   }
}

上記の例は非常に単純な例ですが、複数のクラスを使用する大きなプロジェクトを実行する必要がある場合は、コーディングにかかる​​時間を短縮できます。

あなたが大きなプロジェクトにいるときを想像してください

データベースクエリを制御するクラス、そのデータベースクラスで他の操作を処理するサービスクラス、すべてを制御するコントローラークラスなどを記述します。

于 2016-12-12T07:50:29.523 に答える