20145222黄亚奇《Java程序设计》实验二实验报告
2016-04-16 22:02
507 查看
20145222《Java程序设计》第2次实验报告
实验步骤与内容
一、实验内容
初步掌握单元测试和TDD理解并掌握面向对象三要素:封装、继承、多态
初步掌握UML建模
熟悉S.O.L.I.D原则
了解设计模式
二、实验步骤
1.单元测试
(1) 三种代码伪代码、产品代码、测试代码
(2) TDD(Test Driven Devlopment, 测试驱动开发)
a.先写测试代码,然后再写产品代码的开发方法叫“测试驱动开发”(TDD)。TDD的一般步骤如下:
-明确当前要完成的功能,记录成一个测试列表
-快速完成编写针对此功能的测试用例
-测试代码编译不通过
-编写产品代码
-测试通过
-对代码进行重构,并保证测试通过
-循环完成所有功能的开发
b.基于TDD,我们不会出现过度设计的情况,需求通过测试用例表达出来了,我们的产品代码只要让测试通过就可以了。 Java中有单元测试工具JUnit来辅助进行TDD,红叉说明代码存在语法错误,原因很简单,MyUtil类还不存在,类中的percentage2fivegrade方法也不存在,我们在TDDDemo的src目录中新建一个MyUtil的类,并实现percentage2fivegrade方法
c.测试结果出现了一个绿条(green bar),说明测试通过了。
2.面向对象三要素
封装、继承、多态OO三要素的第一个要素是封装,封装就是将数据与相关行为包装在一起以实现信息就隐藏。Java中用类进行封装,比如一个Dog类:
3.设计模式初步
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,依赖倒置原则)
4.练习
使用TDD的方式设计关实现复数类Complex打印一个复数,打印四则运算的语句
public class ComplexNumber { public static void main(String[] args) { Complex x = new Complex(1.0 , -2.0); Complex y = new Complex(3.0 , 4.0); Complex.printSentence(x, y); } } class Complex { private double a,b; Complex(double a,double b) { this.a = a; this.b = b; } static Complex Add(Complex x,Complex y) { return new Complex(x.a+y.a, x.b+y.b); } static Complex Minus(Complex x,Complex y) { return new Complex(x.a-y.a, x.b-y.b); } static Complex Multiple(Complex x,Complex y) { return new Complex(x.a * y.a - x.b * y.b, x.a * y.b + x.b * y.a); } static Complex Divide(Complex x,Complex y) { Complex conjugate = new Complex(y.a, -y.b); double mo = (y.a)*(y.a) + (y.b)*(y.b); Complex t = Multiple(x,conjugate); return new Complex(t.a/mo , t.b/mo); } static String print(Complex x) { if (x.b > 0) return x.a + "+" + x.b + "i"; else return x.a + "-" + (-x.b) + "i"; } static void printSentence(Complex x, Complex y) { System.out.println("("+ print(x) + ")+("+ print(y) + ") =" +print(Add(x, y))); System.out.println("("+ print(x) + ")-("+ print(y) + ") =" +print(Minus(x, y))); System.out.println("("+ print(x) + ")*("+ print(y) + ") =" +print(Multiple(x, y))); System.out.println("("+ print(x) + ")/("+ print(y) + ") =" +print(Divide(x, y))); } }
实验结果截图:
我的PSP时间
PSP时间
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 20mi | 13.8% |
设计 | 30min | 20.7% |
代码实现 | 60min | 41.4% |
测试 | 15min | 10.3% |
分析总结 | 20min | 13.8% |
相关文章推荐
- Java学习之集合框架
- windows可执行文件调用jar包执行java程序-toolsRun.bat
- 安卓eclipse与genymotion模拟器关联的插件解决办法
- 修改myeclipse 自动提示只有.abc
- 排序算法Java实现
- java BIO NIO AIO 理论篇
- 使用 Gradle 编译 Java 项目时报错: Could not find Tools.jar
- Java语法基础-函数
- mysql 保存手机输入法的数据报错org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback
- java区别(String)和toString()的区别
- spring 详解AOP
- hadoop平台搭建(2)--jdk的安装及配置
- Java基础复习(四)
- Java SE 基础知识
- struts2中在Action中如何获取servlet的api?
- Java编程思想--格式化说明符
- java之继承,封装,多肽
- spring webflow : 上传单个文件实例
- eclipse在线安装svn插件
- Java 将泛型定义在方法上。