20145227《Java程序设计》第2次实验报告
20145227《Java程序设计》第2次实验报告
实验步骤与内容
一、实验内容
1. 初步掌握单元测试和TDD
2. 理解并掌握面向对象三要素:封装、继承、多态
3. 初步掌握UML建模
4. 熟悉S.O.L.I.D原则
5. 了解设计模式
二、实验步骤
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)TDD的编码节奏是:
增加测试代码、JUnit出现红条、修改产品代码、JUnit出现绿条,任务完成
2.面向对象三要素
面向对象(Object-Oriented)的三要素包括:封装、继承、多态。面向对象的思想涉及到软件开发的各个方面,如面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程实现(OOP)。OOA根据抽象关键的问题域来分解系统,关注是什么(what)。OOD是一种提供符号设计系统的面向对象的实现过程,用非常接近问题域术语的方法把系统构造成“现实世界”的对象,关注怎么做(how),通过模型来实现功能规范。OOP则在设计的基础上用编程语言(如Java)编码。贯穿OOA、OOD和OOP的主线正是抽象。 OOD中建模会用图形化的建模语言UML(Unified Modeling Language),UML是一种通用的建模语言。
过程抽象的结果是函数,数据抽象的结果是抽象数据类型(Abstract Data Type,ADT),类可以作具有继承和多态机制的ADT。数据抽象才是OOP的核心和起源。
OO三要素的第一个要素是封装,封装就是将数据与相关行为包装在一起以实现信息就隐藏。Java中用类进行封装,比如一个Dog类:


3.设计模式初步
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,依赖倒置原则)
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时间
| 步骤 | 耗时 | 百分比 |
|---|---|---|
| 需求分析 | 30min | 17% |
| 设计 | 30min | 17% |
| 代码实现 | 50min | 27% |
| 测试 | 40min | 22% |
| 分析总结 | 30min | 17% |
心得体会
这次实验是java的第二次实验,这次实验主要内容是代码面向对象三要素的应用,以及代码的设计思想以及测试方法,通过这周和上周的PSP时间比例可以看出,设计和测试的比重增加,而代码实现的时间比重下降,这更接近于日常生活中的软件开发的基本程序,而不是书本上给定题目进行的练习。通过之前基本的练习已经初步掌握了Java程序设计的基本语句,今后将更加注重程序 设计思维的练习。
参考资料
20145227《Java程序设计》第2次实验报告的更多相关文章
- 20145330《Java程序设计》第二次实验报告
20145330<Java程序设计>第二次实验报告 实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承多态 3.初步掌握UM ...
- 20145320《Java程序设计》第二次实验报告
20145320<Java程序设计>第二次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.12 15: ...
- 《Java程序设计》第二次实验报告
20145220 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测 ...
- 20145333 《Java程序设计》第二次实验报告
2014333 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测试 ...
- 20145240 《Java程序设计》第二次实验报告
20145240 <Java程序设计>第二次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.12 实验 ...
- Java程序设计第四次实验报告
北京电子科技学院(BESTI) 实 验 报 告 课程:java程序设计 班级:1352 姓名:何伟钦 学号:20135223 成绩: 指导教师:娄嘉鹏 ...
- 20145216史婧瑶《Java程序设计》第二次实验报告
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 20145231《Java程序设计》第二次实验报告
实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD: 理解并掌握面向对象三要素: 初步掌握UML建模: 熟悉S.O.L.I.D原则: 了解设计模式: 实验要求 实现并体会例子中代码的 ...
- 20145211 《Java程序设计》实验报告五————Java网络编程及安全实验报告
实验内容 1.掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验步骤 这一部分是与我的partner合作的,详见他的博客- [20145326 <Java程序设计> ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验一 Java开发环境的熟悉 实验报告 一.实验要求 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA ...
随机推荐
- 成员变量的隐藏,方法的覆盖,super关键字
成员变量的隐藏:当父类和子类有相同的成员变量时,即定义了与父类相同的成员变量时,就会发生子类对父类变量的隐藏.对于子类的对象来说,父类中的同名成员变量被隐藏起来,子类就会优先使用自己的成员变量,父类成 ...
- docker note
docker --bip="10.1.42.1/16" -d 挂载宿主机目录 Docker支持挂载宿主机目录,支持宿主机目录和容器之间文件目录进行映射,彼此共享: docker r ...
- Java基础之一组有用的类——使用正则表达式查找和替换(SearchAndReplace)
控制台程序. 使用正则表达式执行查找和替换操作,只需要调用Matcher对象的find()方法,就可以调用appendReplacement()方法来替换匹配的子序列.在提供给方法的新StringBu ...
- Java基础之集合框架——使用真的的链表LinkedList<>(TryPolyLine)
控制台程序. public class Point { // Create a point from its coordinates public Point(double xVal, double ...
- Java的数据转换
Java的数据类型分为三大类,即布尔型.字符型和数值型,其中数值型又分为整型和浮点型.相对于数据类型,Java的变量类型为布尔型boolean;字符型char:整型byte.short.int.lon ...
- tomcat war包部署
平常的开发我们都是通过IDE进行项目的部署,但有时候我们不得不进行手工部署(例如在Server上). 手工部署分为以下几步: 第1步: 用maven打war包 (假如得到的war包名为: appkit ...
- linux 内核模块ko入门
http://blog.csdn.net/elfylin/article/details/5908265
- MAXFLOAT
CGSizeMake(300, MAXFLOAT),是计算宽和高的,里面的MAXFLOAT通俗点说就是最大的数值,代表你的label的宽和高是随着你label内容而变化,不用担心因为label内容过长 ...
- 内存溢出之Tomcat内存配置
设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4. 可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置 三.实例,以下给 ...
- 查看Linux服务器各种信息方法
有的时候需要搜集服务器的各种信息,比如cpu信息,内存信息,linux版本信息,安装的各种软件信息等等.下面总结几种主要指标的查看方法. 1. 查看Linux发行版信息 [root@pcmweb ~] ...