20144303 《Java程序设计》第二次实验实验报告
20144303 《Java程序设计》第二次实验实验报告
北京电子科技学院(besti)实验报告
实验内容
- 初步掌握单元测试和TDD
- 理解并掌握面向对象三要素:封装、继承、多态
- 初步掌握UML建模
- 熟悉S.O.L.I.D原则
- 了解设计模式
实验步骤
一、三种代码:
产品代码
public class MyUtil{public static String percentage2fivegrade(int grade){//如果成绩小于60,转成“不及格”if (grade < 60)return "不及格";//如果成绩在60与70之间,转成“及格”else if (grade < 70)return "及格";//如果成绩在70与80之间,转成“中等”else if (grade < 80)return "中等";//如果成绩在80与90之间,转成“良好”else if (grade < 90)return "良好";//如果成绩在90与100之间,转成“优秀”else if (grade < 100)return "优秀";//其他,转成“错误”else return "错误";}
}
编写MyUtilTest的测试模块
public class MyUtilTest {
public static void main(String[] args) {
// 百分制成绩是50时应该返回五级制的“不及格”
if(MyUtil.percentage2fivegrade(50) != "不及格")
System.out.println("test failed!");
else
System.out.println("test passed!");
}
}
结果:
只有一组输入的测试是不充分的,我们把一般情况都测试一下,代码如下:
public class MyUtilTest {
public static void main(String[] args) {
//测试正常情况
if(MyUtil.percentage2fivegrade(55) != "不及格")
System.out.println("test failed!");
else if(MyUtil.percentage2fivegrade(65) != "及格")
System.out.println("test failed!");
else if(MyUtil.percentage2fivegrade(75) != "中等")
System.out.println("test failed!");
else if(MyUtil.percentage2fivegrade(85) != "良好")
System.out.println("test failed!");
else if(MyUtil.percentage2fivegrade(95) != "优秀")
System.out.println("test failed!");
else
System.out.println("test passed!");
}
}
结果:
TDD:
一般步骤如下:
- 明确当前要完成的功能,记录成一个测试列表
- 快速完成编写针对此功能的测试用例
- 测试代码编译不通过(没产品代码呢)
- 编写产品代码
- 测试通过
- 对代码进行重构
- 循环完成所有功能
TDD的编码节奏
- 增加测试代码,JUnit出现红条
- 修改产品代码
- JUnit出现绿条,任务完成
二、面向对象三要素:
- 抽象
- 封装、继承与多态
- 设计模式初步
三、S.O.L.I.D原则
面向对象三要素是“封装、继承、多态”,任何面向对象编程语言都会在语法上支持这三要素。如何借助抽象思维用好三要素特别是多态还是非常困难的,S.O.L.I.D类设计原则是一个很好的指导:
- SRP(Single Responsibility Principle,单一职责原则)
- OCP(Open-Closed Principle,开放-封闭原则)
- LSP(Liskov Substitusion Principle,Liskov替换原则)
- ISP(Interface Segregation Principle,接口分离原则)
DIP(Dependency Inversion Principle,依赖倒置原则)
public abstract class Animal {
private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public abstract String shout();
}
public class Dog extends Animal{
public String shout(){
return "汪汪";
}
public String toString(){
return "The Dog's color is " + this.getColor() +", and it shouts "+ this.shout() + "!";
}
}
public class Cat extends Animal{
public String shout(){
return "喵喵";
}
public String toString(){
return "The Cat's color is " + this.getColor() +", and it shouts "+ this.shout() + "!";
}
}
四、练习
public class TestComplex
{public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入复数A:");
float realpart1=sc.nextInt();float imagepart1=sc.nextInt();
System.out.println("请输入复数B:");
float realpart2=sc.nextInt();float imagepart2=sc.nextInt();
Complex c1=new Complex(realpart1,imagepart1);
Complex c2=new Complex(realpart2,imagepart2);
System.out.println("请选择运算:\n"+
"(选择 1 执行加法运算)\n"+
"(选择 2 执行减法运算)\n"+
"(选择 3 执行乘法运算)\n"+
"(选择 4 执行除法运算)");
int s=sc.nextInt();
Complex C=new Complex();
for(;;)
{
C.PressButton(s,c1,c2);
System.out.println("Please input complex A again:");
realpart1=sc.nextInt();imagepart1=sc.nextInt();
System.out.println("Please input complex B again:");
realpart2=sc.nextInt();imagepart2=sc.nextInt();
System.out.println("Please choose the operate pattern:\n"+
"(choose 1 will run add operation)\n"+
"(choose 2 will run sub operation)\n"+
"(choose 3 will run mul operation)\n"+
"(choose 4 will run div operation)");
s=sc.nextInt();
if(s==-1)
{
System.out.println("Game over!");
break;
}
}}
}
结果:
import java.util.Scanner;public class ComplexMain {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入两个复数的实部和虚部:(a+bi、c+di)");
System.out.printf("a =");
int a=scanner.nextInt();
System.out.printf("b =");
int b=scanner.nextInt();
System.out.printf("c =");
int c=scanner.nextInt();
System.out.printf("d =");
int d=scanner.nextInt();
Complex fushu1=new Complex(a,b);
Complex fushu2=new Complex(c,d);
while(true) {
System.out.println("请输入需要进行的运算:1、ADD 2、SUBTRACT 3、MULTIPLY ");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println(Complex.addition(fushu1, fushu2));
break;
case 2:
System.out.println(Complex.subtract(fushu1, fushu2));
break;
case 3:
System.out.println(Complex.multiplication(fushu1, fushu2));
break;default:System.out.println("ERROR!!!");
}
}
}
}
结果:
转载于:https://www.cnblogs.com/20144303sys/p/5402785.html
20144303 《Java程序设计》第二次实验实验报告相关推荐
- 解析java程序设计第二版答案,解析Java程序设计答案
解析Java程序设计答案 java作业 5. 答:由于第一个catch子句将捕获所有异常,因此,第二个catch子句永远不会被执行.不能通过编译. 6. 答: public class first_e ...
- 2019年JAVA程序设计第二周編程总结
2019第二周实验报告 Java实验报告 班级 计算机科学与技术二班 学号 20188442 姓名 吴怡君 完成时间 2019/9/7 评分等级 实验一 Java开发环境与简单Java程序 一. 实验 ...
- Java程序设计第二次作业
1.编写"人"类及其测试类. 1.1 "人"类: 类名:Person 属性:姓名.性别.年龄.身份证号码 方法:在控制台输出各个信息 1.2 测试类 ...
- 涨知识!java程序设计第二版课后答案雍俊海
零基础如何学习Java? 首先,你要明白一点,Java入门不难! 无论你是从事哪个行业,兴趣一定是最好的老师,也是你学习的动力. 学习方式1:自学 自学模式其实我个人不建议绝大部分的人选择,因为自学是 ...
- java程序设计第二课
抽象基类和接口 可以使用关键字abstact来创建抽象类,该抽象类不能被实例化 也可以使用关键字abstact来描述一个尚未被具体实现的方法,该方法不能包含方法体 一个抽象方法只能在抽象类中创建,当该 ...
- Java模式设计卖电脑实验报告_20145310《Java程序设计》第2次实验报告
20145310<Java程序设计>第2次实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计 ...
- java实验四用户程序设计_20145329《Java程序设计》实验四总结
实验四 Android环境搭建 实验内容 1.搭建Android环境 2.运行Android 3.修改代码,能输出学号 实验步骤 1.搭建Android环境 2.安装Android,核心是配置JDK. ...
- 《Java程序设计》第二次实验报告
20145220 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测 ...
- java程序设计实验报告册_20145215《Java程序设计》实验一实验报告
实验一 Java开发环境的熟悉 实验内容及步骤 使用JDK编译.运行简单的Java程序 命令行下程序开发: 在命令行下建立实验目录,进入该目录后创建exp1目录 敲入以下代码: package exp ...
最新文章
- 你只使用到了 VS Code 20% 的功能?听听 VS Code 首著作者怎么说
- 计算机尖端技术,不可思议的尖端技术:Top10
- jquery去掉数组最后一个元素_从数组中删除最后一项
- Hologres如何支持超高基数UV计算(基于roaringbitmap实现)
- 一个 redis 异常访问引发 oom 的案例分析
- 窗体传值 父子窗体传值情况 c# 1231
- django 1.8 官方文档翻译: 3-6-1 中间件概览
- c语言双链表从右向左遍历,有没有大佬在的,我这双向链表怎么没办法遍历
- eclipse打开xml文件都显示为灰色
- 数据分析--07:金融量化
- 上海博物馆——古代的邂逅
- ROS入门-ROS的安装及编写简单的节点talker和listener
- 女神模特网站源码_套图下载 GBK+UTF Discuz模板
- MKS GEN_L V2.1使用说明书
- 三款ANI光标漏洞蠕虫病毒专杀工具及两个补丁
- 案例分析|名创优品是如何通过精细化管理获得火速扩张的?
- UR5构型机械臂正逆运动学
- BurpSuite插件
- 微博营销—新浪微博粉丝头条效果分析
- 基于C#+SqlServer开发(WinForm)学生宿舍管理系统【100010056】
热门文章
- java 获取企业微信access_token调用接口
- GenVisR绘制瀑布图/突变图谱
- 解决Result Maps collection already contains value for...BaseResultMap问题
- canvas楼房穿梭动画js特效
- python模拟app操作_Python爬虫入门教程 49-100 Appium安装+操作51JOB_APP(模拟手机操作之一)手机APP爬虫-阿里云开发者社区...
- 展讯怎么办?–给LEO的建议
- 单招计算机英语面试口语,单招面试英语自我介绍
- 佛祖保佑 永无BUG
- idea2020更新了maven自动加载依赖
- html 实现3d效果代码,纯CSS实现3D的代码