Java程式設計(五)作業

2022-10-05 18:01:42

 

題目1:Lisa正在編寫一個能夠計算三科——數學、英語、程式設計基礎——平均成績(平均成績=三科總成績/3)和智育成績(智育成績=三科總成績*0.7)的程式。由於兩個成績的獲得都要先計算總成績,因此她考慮使用23種設計模式中的模板方法模式完成。模板方法模式——定義一個操作方法中的演演算法的「骨架」,而將一些步驟延遲到子類中。它通過把不變行為搬移到父類別,去除子類中的重複程式碼來體現程式的優勢。為此,Lisa設計了一個抽象類和三個非抽象類:

l  抽象類——AbstractComputer.java

l  計算平均成績的類——ComputerAverage.java

l  計算智育成績的類——ComputerIntel.java

l  測試類——Test.java

(1)AbstractComputer.java

表示兩種計算的「骨架」,組成內容如下:

l  total:成員變數,double型,表示總成績

l  public abstract double computer( ):表示計算平均成績或智育成績

l  public double templateComputer(double math,double english,double program):計算數學、英語、程式設計基礎三科總成績,為total賦值,並呼叫computer( )方法獲得平均成績或智育成績

(2)ComputerAverage.java

AbstractComputer類的非抽象子類,用於計算平均成績,組成內容如下:

l  public double computer( ):重寫的computer( )方法,計算total的平均值

(3)ComputerIntel.java

AbstractComputer類的非抽象子類,用於計算智育成績,組成內容如下:

l  public double computer( ):重寫的computer( )方法,計算total摺合的智育成績

(4)Test.java

在Test類中通過鍵盤輸入三科成績,如89,97.5,95,分別建立AbstractComputer類的上轉型物件aver和intel,計算這三科成績的平均成績和智育成績,並將結果輸出。

 1 //Lisa正在編寫一個能夠計算三科——數學、英語、程式設計基礎——平均成績(平均成績=三科總成績/3)和
 2 //智育成績(智育成績=三科總成績*0.7)的程式。由於兩個成績的獲得都要先計算總成績,
 3 //因此她考慮使用23種設計模式中的模板方法模式完成。模板方法模式——定義一個操作方法中的演演算法的「骨架」,
 4 //而將一些步驟延遲到子類中。它通過把不變行為搬移到父類別,去除子類中的重複程式碼來體現程式的優勢。
 5 //為此,Lisa設計了一個抽象類和三個非抽象類:
 6 //抽象類——AbstractComputer.java
 7 //計算平均成績的類——ComputerAverage.java
 8 //計算智育成績的類——ComputerIntel.java
 9 //測試類——Test.java
10 //(1)AbstractComputer.java
11 //表示兩種計算的「骨架」,組成內容如下:
12 //total:成員變數,double型,表示總成績
13 //public abstract double computer( ):表示計算平均成績或智育成績
14 //public double templateComputer(double math,double english,double program):
15 //計算數學、英語、程式設計基礎三科總成績,為total賦值,並呼叫computer( )方法獲得平均成績或智育成績
16 
17 
18 abstract class AbstractComputer {
19     double total;
20 
21     public abstract double computer();
22 
23     public double templateComputer(double math, double english, double program) {
24         total = math + english + program;
25         return computer();
26     }
27 }
//(2)ComputerAverage.java
//AbstractComputer類的非抽象子類,用於計算平均成績,組成內容如下:
//public double computer( ):重寫的computer( )方法,計算total的平均值


class ComputerAverage extends AbstractComputer {

    public double computer() {

        return total / 3;
    }

}
//(3)ComputerIntel.java
//AbstractComputer類的非抽象子類,用於計算智育成績,組成內容如下:
//public double computer( ):重寫的computer( )方法,計算total摺合的智育成績


class ComputerIntel extends AbstractComputer {
    public double computer() {
        return total * 0.7;
    }

}
//(4)Test.java
//在Test類中通過鍵盤輸入三科成績,如89,97.5,95,分別建立AbstractComputer類的上轉型物件average和intel,
//計算這三科成績的平均成績和智育成績,並將結果輸出。

import java.util.*;

public class test2 {
    public static void main(String[] args) {
        System.out.println("請分別輸入三科成績:");
        @SuppressWarnings("resource")
        Scanner input = new Scanner(System.in);
        double math = input.nextDouble();
        double english = input.nextDouble();
        double program = input.nextDouble();
        AbstractComputer computerAverage = new ComputerAverage();
        System.out.println("三科平均成績為:");
        System.out.println(computerAverage.templateComputer(math, english, program));

        AbstractComputer computerIntel = new ComputerIntel();
        System.out.println("三科的智育成績為:");
        System.out.println(computerIntel.templateComputer(math, english, program));
    }

}