20155225 实验二《Java面向对象程序设计》实验报告

一、单元测试

三种代码

知道了伪代码、产品代码、测试代码的关系和用途,并根据老师的例子,按测试代码调试了产品代码。

值得注意的是,测试用例要全面选择,特别是异常用例和边界用例。

TDD(Test Driven Devlopment,测试驱动开发)

安装了Java单元测试工具JUnit进行TDD。体会了TDD编码节奏。并且最终测试结果出现了绿条。

学会了使用JUnit学习Java,并用TDD的方式研究学习了StringBuffer,测试了StringBuffer的几个常用方法(append(),charAt(),capacity())。

二、面向对象三要素

抽象

封装、继承和多态

学会了使用StarUML进行建模,针对最后练习里设计复数类进行OOD设计。老师已经给出了Complex类的整体框架。我在StarUML中画出了Complex类的模型图。

三、设计模式初步

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,依赖倒置原则)

模式与设计模式

知道了模式的重要作用和设计模式在Java中的重要地位。

设计模式示例

根据老师给出的例子体会了OCP原则和DIP原则,初步理解了设计模式,并实例程序扩充,使其支持了short类。

四、练习

使用TDD方式设计实现复数类Complex

对Complex这个类的设计我体会比较深,虽然是根据老师给出的模板来的,但在充实模板的过程中,我体会到一个设计一个类的基本要素和方法。

遇到的问题:在重写toString()时,为了返回一个复数字符串,我首先想到的是进行字符串拼接。于是查找API文档,找到concat()方法,但concat()方法只能拼接字符串,而对于‘+’、‘i’,还要先转为字符串,于是我又在API文档中找到了类方法valueof(),但这样根本不行。最后我突然想到+就可以直接实现字符串连接,果然成功了!toString()代码如下:

 public String toString(){
String s = new String(Double.toString(getterRealPart()));
// s.concat(Double.toString(getterRealPart()));
if(getterImagePart()>0)
s = s + '+';
s = s + Double.toString(getterImagePart());
// s.concat(Double.toString(getterImagePart()));
s = s + 'i';
return s;
}

Complex类完整代码:

public class Complex {
// 定义属性并生成getter,setter
private double RealPart;
private double ImagePart; public void setterRealPart(double realPart) {
this.RealPart = realPart;
}
public void setterImagePart(double imagePart){
this.ImagePart = imagePart;
}
public double getterRealPart(){
return RealPart;
}
public double getterImagePart(){
return ImagePart;
} // 定义构造函数
public Complex(){}
public Complex(double R,double I){
this.RealPart = R;
this.ImagePart = I;
} //Override Object
public boolean equals(Object obj){
if(this == obj){
return true;
}
if(!(obj instanceof Complex)){
return false;
}
Complex complex = (Complex) obj;
if(getterRealPart()!=complex.getterRealPart()){
return false;
}
if(getterImagePart()!=(complex.getterImagePart())){
return false;
}
return true;
}
public String toString(){
String s = new String(Double.toString(getterRealPart()));
// s.concat(Double.toString(getterRealPart()));
if(getterImagePart()>0)
s = s + '+';
s = s + Double.toString(getterImagePart());
// s.concat(Double.toString(getterImagePart()));
s = s + 'i';
return s;
} // 定义公有方法:加减乘除
Complex ComplexAdd(Complex a){
Complex b = new Complex();
b.ImagePart = this.ImagePart + a.ImagePart;
b.RealPart = this.RealPart + a.RealPart;
return b;
}
Complex ComplexSub(Complex a){
Complex b = new Complex();
b.ImagePart = this.ImagePart - a.ImagePart;
b.RealPart = this.RealPart - a.RealPart;
return b;
}
Complex ComplexMulti(Complex a){
Complex b = new Complex();
b.RealPart = this.RealPart * a.RealPart - this.ImagePart * a.ImagePart;
b.ImagePart = this.RealPart * a.ImagePart + this.ImagePart * a.RealPart;
return b;
}
Complex ComplexDiv(Complex a) {
Complex b = new Complex();
b.RealPart = (this.RealPart * a.RealPart + this.ImagePart * a.ImagePart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart);
b.ImagePart = (this.ImagePart * a.RealPart - this.RealPart * a.ImagePart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart);
return b;
}
}

最终每个方法都测试通过了。

PSP时间

步骤 耗时 百分比
需求分析 5 10%
设计 5 10%
代码实现 30 60%
测试 5 10%
分析总结 5 10%

单元测试的好处:

单元测试将复杂的问题分解了。只要我们能保证每一块积木是正确可用的,那我们砌出来的墙,建起来的楼必然也是牢靠的。

20155225 实验二《Java面向对象程序设计》实验报告的更多相关文章

  1. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

  2. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

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

  3. 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告

    20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...

  4. 实验二Java面向对象程序设计实验报告(2)

    实验二 Java面向对象程序设计 实验概述: 课程:程序设计与数据结构 班级:1623班 姓名: 邢天岳 学号:2309 指导老师:娄老师 王老师 实验日期:2017.4.16 实验名称: Java面 ...

  5. 实验二 Java面向对象程序设计实验报告

    实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验 ...

  6. 20145326《Java程序设计》实验二Java面向对象程序设计实验报告

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

  7. 20155217 实验二 Java面向对象程序设计 实验报告

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

  8. 20145219 《Java程序设计》实验二 Java面向对象程序设计实验报告

    20145219 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...

  9. 20162305 实验二 Java面向对象程序设计 实验报告

    20162305 实验二 Java面向对象程序设计 实验报告 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D ...

  10. 20145239杜文超 《Java程序设计》实验二 Java面向对象程序设计实验报告

    20145239 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...

随机推荐

  1. Linux下的wine生活(QQ/微信/Office)

    My wine life like windows 本篇内容涉及QQ.微信.Office在wine中的使用配置. QQ 到deepin下载轻聊版. 如果安装了crossover,那么将其中opt/cx ...

  2. Netflix的zuul使用

    1.zuul出现的原因 2.zuul的介绍 3.zuul如何使用 4.zuul的一些注意事项

  3. 用R做时间序列分析之ARIMA模型预测

    昨天刚刚把导入数据弄好,今天迫不及待试试怎么做预测,网上找的帖子跟着弄的. 第一步.对原始数据进行分析 一.ARIMA预测时间序列 指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之 ...

  4. Lowest Common Ancestor in a Binary Tree

    二叉树最低公共祖先节点 acmblog If one key is present and other is absent, then it returns the present key as LC ...

  5. HOJ 13102 Super Shuttle (圆的反演变换)

    HOJ 13102 Super Shuttle 链接:http://49.123.82.55/online/?action=problem&type=show&id=13102 题意: ...

  6. Macvlan技术

    参考博客:https://blog.csdn.net/dog250/article/details/45788279 一.MACVLAN虚拟网卡技术 MACVLAN技术可谓是提出一种将一块以太网卡虚拟 ...

  7. etcd3集群管理

    目录 在什么情况下需要集群的运行时更改 集群运行时更改的操作 更新一个节点 删除一个节点 增加一个节点 节点迁移和灾难恢复 迁移节点 灾难恢复 在什么情况下需要集群的运行时更改 维护和升级多个机器 如 ...

  8. Redis集群部署(redis + cluster + sentinel)

    概述说明 说明:本次实验采用c1.c2.c3三台虚拟机完成,每台服务器上都部署一个master.一个slave和一个sentinel.当某主节点的挂了,相应的从节点替位:当某主节点及主节点对应的从节点 ...

  9. 20155235 2016-2017-2 《Java程序设计》第六周学习总结

    20155235 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 第十章 InputStream与OutputStreaam 串流设计的概念 串流继承架构 川 ...

  10. win7.wifi热点

    使用本地连接上网,将网卡设为wifi热点 cmd 管理员身份运行 netsh wlan set hostednetwork mode=allow ssid=4Gtest key=12345678 网络 ...