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));
} }
Java程序设计(五)作业的更多相关文章
- Week11《java程序设计》作业总结
Week11<java程序设计>作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 答: 2. 书面作业 本次PTA作业题集多线程 1. 源代码 ...
- week10《java程序设计》作业总结
week10<java程序设计>作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 答:: 2. 书面作业 本次PTA作业题集异常 1. 常用异常 ...
- Java程序设计第一次作业
虽说这学期Java比上学期的C语言要简单些许,但是初次面对java程序,还是有点难度的.
- java 程序设计第一次作业
public class Join{ public static void main(String args[]){ String s1=new String("hello"); ...
- 2016-2017-2 《Java程序设计》预备作业2总结
2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...
- 201521123072《java程序设计》第五周学习总结
201521123072<java程序设计>第五周学习总结 标签(空格分隔): java学习 1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 代码 ...
- 201521123038 《Java程序设计》 第五周学习总结
201521123038 <Java程序设计> 第五周学习总结 1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.ja ...
- 201521123061 《Java程序设计》第五周学习总结
201521123061 <Java程序设计>第五周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 1.代 ...
- 20175202 《Java程序设计》第五周学习总结
20175209 2018-2019-2 <Java程序设计>第五周学习总结 教材知识点总结 1.接口声明: 使用关键字interface来定义接口. 定义接口时使用关键字interfac ...
- 20175317 《Java程序设计》第五周学习总结
20175317 <Java程序设计>第五周学习总结 教材学习内容总结 第五周我学习了教材第六章的内容,了解了接口的知识,学到了以下内容: 明白了什么是接口 学会了如何实现接口 了解了接口 ...
随机推荐
- 了解有哪几个C标准&了解C编译管道
下列哪个不是C标准.参考:C语言标准 小知识:C语言标准的发展 K&R C: 1978年,丹尼斯·里奇(Dennis Ritchie)和布莱恩·科尔尼干(Brian Kernighan)出版了 ...
- nginx+redis+tomcat session绑定
需求: 公司后端两台tomcat做负载,前端nginx接收用户请求:为了使无论用户请求到后端哪台设备其session都能保持一致,需要做session绑定:所需软件: tomcat8.redis.ng ...
- 循环结构——while、do-while、for循环
1.while循环 语法格式: while(条件判断){ 循环体 } 解释: (1)关键字while后的小括号中的内容时循环条件. (2)循环条件是一个布尔表达式,它的值为布尔类型 "真&q ...
- 技术分享 | 浅谈MySQL闪回的实现
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 1.闪回实现原理 2.binlog文件格式初探 3.闪回实现过程 1.闪回实现原 ...
- vue 将markdown字符串转html、修改主题、生成目录
前言 将 markdown 字符串转成 html 显示出来,同时把目录也提取出来一起显示.可以使用 marked 来读取 markdown 字符串解析成 html marked官网:https://m ...
- ahooks 中那些控制“时机”的hook都是怎么实现的?
本文是深入浅出 ahooks 源码系列文章的第五篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 本文来探索一下 ahooks 是怎么封装 React 的一些执行& ...
- 七分钟学会 HTML 网页制作
什么是HTML 点击打开视频讲解更加详细 Hyper Text Markup Language(超文本标记语言) 标签控制排版 体积小,方便传输 编写HTLML 推荐使用:VS Code <!D ...
- RabbitMQ 入门系列:2、基础含义理解:链接、通道、队列、交换机
系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...
- 1.2_Selenium的三生三世
- DES|3DES|AES|RSA|DH | CA | SSL(HTTPS)
1.对称密钥算法: 加解密速度块,算法使安全的,已知算法无法推出密钥.但是密钥的分发困难. DES:对称密钥算法,是一种块加密算法,只有一个密钥.加解密都是用一个密钥. 3DES:与DES一样,可以认 ...