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程序设计》第二次实验实验报告相关推荐

  1. 解析java程序设计第二版答案,解析Java程序设计答案

    解析Java程序设计答案 java作业 5. 答:由于第一个catch子句将捕获所有异常,因此,第二个catch子句永远不会被执行.不能通过编译. 6. 答: public class first_e ...

  2. 2019年JAVA程序设计第二周編程总结

    2019第二周实验报告 Java实验报告 班级 计算机科学与技术二班 学号 20188442 姓名 吴怡君 完成时间 2019/9/7 评分等级 实验一 Java开发环境与简单Java程序 一. 实验 ...

  3. Java程序设计第二次作业

    1.编写"人"类及其测试类. 1.1 "人"类:  类名:Person  属性:姓名.性别.年龄.身份证号码  方法:在控制台输出各个信息 1.2 测试类 ...

  4. 涨知识!java程序设计第二版课后答案雍俊海

    零基础如何学习Java? 首先,你要明白一点,Java入门不难! 无论你是从事哪个行业,兴趣一定是最好的老师,也是你学习的动力. 学习方式1:自学 自学模式其实我个人不建议绝大部分的人选择,因为自学是 ...

  5. java程序设计第二课

    抽象基类和接口 可以使用关键字abstact来创建抽象类,该抽象类不能被实例化 也可以使用关键字abstact来描述一个尚未被具体实现的方法,该方法不能包含方法体 一个抽象方法只能在抽象类中创建,当该 ...

  6. Java模式设计卖电脑实验报告_20145310《Java程序设计》第2次实验报告

    20145310<Java程序设计>第2次实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计 ...

  7. java实验四用户程序设计_20145329《Java程序设计》实验四总结

    实验四 Android环境搭建 实验内容 1.搭建Android环境 2.运行Android 3.修改代码,能输出学号 实验步骤 1.搭建Android环境 2.安装Android,核心是配置JDK. ...

  8. 《Java程序设计》第二次实验报告

    20145220 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测 ...

  9. java程序设计实验报告册_20145215《Java程序设计》实验一实验报告

    实验一 Java开发环境的熟悉 实验内容及步骤 使用JDK编译.运行简单的Java程序 命令行下程序开发: 在命令行下建立实验目录,进入该目录后创建exp1目录 敲入以下代码: package exp ...

最新文章

  1. 你只使用到了 VS Code 20% 的功能?听听 VS Code 首著作者怎么说
  2. 计算机尖端技术,不可思议的尖端技术:Top10
  3. jquery去掉数组最后一个元素_从数组中删除最后一项
  4. Hologres如何支持超高基数UV计算(基于roaringbitmap实现)
  5. 一个 redis 异常访问引发 oom 的案例分析
  6. 窗体传值 父子窗体传值情况 c# 1231
  7. django 1.8 官方文档翻译: 3-6-1 中间件概览
  8. c语言双链表从右向左遍历,有没有大佬在的,我这双向链表怎么没办法遍历
  9. eclipse打开xml文件都显示为灰色
  10. 数据分析--07:金融量化
  11. 上海博物馆——古代的邂逅
  12. ROS入门-ROS的安装及编写简单的节点talker和listener
  13. 女神模特网站源码_套图下载 GBK+UTF Discuz模板
  14. MKS GEN_L V2.1使用说明书
  15. 三款ANI光标漏洞蠕虫病毒专杀工具及两个补丁
  16. 案例分析|名创优品是如何通过精细化管理获得火速扩张的?
  17. UR5构型机械臂正逆运动学
  18. BurpSuite插件
  19. 微博营销—新浪微博粉丝头条效果分析
  20. 基于C#+SqlServer开发(WinForm)学生宿舍管理系统【100010056】

热门文章

  1. java 获取企业微信access_token调用接口
  2. GenVisR绘制瀑布图/突变图谱
  3. 解决Result Maps collection already contains value for...BaseResultMap问题
  4. canvas楼房穿梭动画js特效
  5. python模拟app操作_Python爬虫入门教程 49-100 Appium安装+操作51JOB_APP(模拟手机操作之一)手机APP爬虫-阿里云开发者社区...
  6. 展讯怎么办?–给LEO的建议
  7. 单招计算机英语面试口语,单招面试英语自我介绍
  8. 佛祖保佑 永无BUG
  9. idea2020更新了maven自动加载依赖
  10. html 实现3d效果代码,纯CSS实现3D的代码