Java程序设计(五)作业

 

题目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));     }  }

 

发表评论

相关文章