■概要
実装する処理の概要は以下の通り。
- ユーザ名と教科の点数から、合計・平均点を算出
- 教科は国語、英語、数学、歴史、科学とする
- コンストラクタは以下の3つ - 言語科目(国語、英語)
- 言語科目以外(数学、歴史、科学)
- 全科目(国語、英語、数学、歴史、科学)
 
- 初期化しで、任意区切りの値を出力する
■クラス図
実装する処理のクラス図を以下に示す。

■サンプルコード
・SampleInitializer.java
package sample;
public class SampleInitializer {
  private String userName;
  private int scoreJapanese;
  private int scoreEnglish;
  private int scoreMath;
  private int scoreScience;
  private int scoreHistory;
  private int[] scoreList;
  // 初期化子
  {
    System.out.println("====ユーザの合計・平均点算出クラス呼び出し====");
  }
  /* 言語科目のコンストラクタ
      @param ユーザ名
      @param 国語
      @param 英語
   */
  public SampleInitializer(String userName, int scoreJapanese, int scoreEnglish) {
    this.userName = userName;
    this.scoreJapanese = scoreJapanese;
    this.scoreEnglish = scoreEnglish;
    this.scoreList = new int[]{this.scoreJapanese, this.scoreEnglish};
  }
  /* 言語科目以外のコンストラクタ
      @param ユーザ名
      @param 数学
      @param 科学
      @param 歴史
   */
  public SampleInitializer(String userName, int scoreMath, int scoreScience, int scoreHistory) {
    this.userName = userName;
    this.scoreMath = scoreMath;
    this.scoreScience = scoreScience;
    this.scoreHistory = scoreHistory;
    this.scoreList = new int[]{this.scoreMath, this.scoreScience, this.scoreHistory};
  }
  /* 全科目のコンストラクタ
      @param ユーザ名
      @param 国語
      @param 英語
      @param 数学
      @param 科学
      @param 歴史
   */
  public SampleInitializer(String userName, int scoreJapanese, int scoreEnglish, int scoreMath,
      int scoreScience, int scoreHistory) {
    this.userName = userName;
    this.scoreJapanese = scoreJapanese;
    this.scoreEnglish = scoreEnglish;
    this.scoreMath = scoreMath;
    this.scoreScience = scoreScience;
    this.scoreHistory = scoreHistory;
    this.scoreList = new int[]{this.scoreJapanese, this.scoreEnglish, this.scoreMath, this.scoreScience, this.scoreHistory};
  }
  // 合計点を算出する処理
  private int calSum(){
    // 返却用合計値
    int sum = 0;
    // 得点リスト分繰り返し
    for (int score: this.scoreList){
      // 得点を加算する
      sum += score;
    }
    return sum;
  }
  // 平均点を算出する処理
  private double calAverage(){
    if (this.scoreList.length == 0){
      return 0;
    }
    return (double) calSum() / this.scoreList.length;
  }
  // ユーザの合計・平均を出力する処理
  public void getUserSumAverageScore(){
    System.out.println("ユーザ名:" + this.userName);
    System.out.println("合計点:" + calSum());
    System.out.println("平均点:" + calAverage());
  }
}・HowToInitializerMain.java
package main;
import sample.SampleInitializer;
public class HowToInitializerMain {
  public static void main(String[] args){
    // 言語科目
    SampleInitializer sampleInitializerUserA = new SampleInitializer("UserA", 50, 40);
    sampleInitializerUserA.getUserSumAverageScore();
    // 言語科目以外
    SampleInitializer sampleInitializerUserB = new SampleInitializer("UserB", 60, 70, 80);
    sampleInitializerUserB.getUserSumAverageScore();
    // 全科目
    SampleInitializer sampleInitializerUserC = new SampleInitializer("UserC", 30, 60, 20, 100, 70);
    sampleInitializerUserC.getUserSumAverageScore();
  }
}
■実行結果
====ユーザの合計・平均点算出クラス呼び出し====
ユーザ名:UserA
合計点:90
平均点:45.0
====ユーザの合計・平均点算出クラス呼び出し====
ユーザ名:UserB
合計点:210
平均点:70.0
====ユーザの合計・平均点算出クラス呼び出し====
ユーザ名:UserC
合計点:280
平均点:56.0


コメント