20155225 实验二《Java面向对象程序设计》实验报告
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面向对象程序设计》实验报告的更多相关文章
- 20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
- 20145206《Java程序设计》实验二Java面向对象程序设计实验报告
20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告
20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...
- 实验二Java面向对象程序设计实验报告(2)
实验二 Java面向对象程序设计 实验概述: 课程:程序设计与数据结构 班级:1623班 姓名: 邢天岳 学号:2309 指导老师:娄老师 王老师 实验日期:2017.4.16 实验名称: Java面 ...
- 实验二 Java面向对象程序设计实验报告
实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验 ...
- 20145326《Java程序设计》实验二Java面向对象程序设计实验报告
20145326<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- 20155217 实验二 Java面向对象程序设计 实验报告
20155217 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模 ...
- 20145219 《Java程序设计》实验二 Java面向对象程序设计实验报告
20145219 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...
- 20162305 实验二 Java面向对象程序设计 实验报告
20162305 实验二 Java面向对象程序设计 实验报告 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D ...
- 20145239杜文超 《Java程序设计》实验二 Java面向对象程序设计实验报告
20145239 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...
随机推荐
- shiro权限认证与授权
什么是shiro? Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. 为什么要用sh ...
- Sentence-seven basic patterns 英语句子结构
Meaning of some words subject 主语 verb 动词 object 宾语 adverbial 状语 complement 补语 imperative sentence 祈 ...
- 科学计算三维可视化---TVTK入门(数据加载)
一:数据加载 大多数可视化应用的数据并非是在TVTK库中构建的,很多都是通过接口读取外部数据文件 (一)使用vtkSTLReader来读取外部文件 .stl 文件是在计算机图形应用系统中,用于表示三角 ...
- 为了拿Ph.D而做出的诺贝尔奖
- 【转】一个简单的WCF回调实例
代码下载:http://files.cnblogs.com/AlwinXu/CallbackService-master.zip 本文转自: http://adamprescott.net/2012/ ...
- [转载]学习C语言基本思路与参考书籍
http://zhuanlan.zhihu.com/linjr/19694823 计算机行业发展非常快,大学里的教育基本都跟不上实际的社会需求.如果你所在的学校还在指定大家使用谭浩强的教材,或使用VC ...
- Cloudera Manager Admin控制台启动不起来
这几天都在搞大数据这一块,由于以前自己在弄hadoop等安装的时候特别的费劲,于是乎找到了广大程序员的福音——cloudera manager,但是第一步安装好了以后无法启动,再三思考+百度发现: 通 ...
- Hadoop2.6.0在CentOS 7中的集群搭建
我这边给出我的集群环境是由一台主节点master和三台从节点slave组成: master 192.168.1.2 slave1 192.168.1.3 slave2 ...
- td自动换行
自动换行方法: 1.在<td>中设置样式style为word-wrap:break-word;word-break:break-all; (一般情况只需要设置word-break:brea ...
- Anaconda+django写出第一个web app(二)
今天开始建立App中的第一个Model,命名为Tutorial. Model的定义在main文件夹下的models.py中通过类进行,我们希望Tutorial这个model包含三个属性:标题.内容和发 ...