■概要
実装する処理の概要は以下の通り。
- ユーザ名と教科の点数から、合計・平均点を算出
- 教科は国語、英語、数学、歴史、科学とする
- コンストラクタは以下の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
コメント