205315Java实验二实验报告
实验内容
初步掌握单元测试和TDD
理解并掌握面向对象三要素:封装、继承、多态
初步掌握UML建模
熟悉S.O.L.I.D原则
了解设计模式
实验步骤
(一)单元测试
用程序解决问题时,要会写三种码:
1.先按要求写出伪代码。
2.然后写出产品代码。
3.最后进行测试。
(二) TDD(Test Driven Devlopment, 测试驱动开发)
先根据需求写测试代码,然后再根据测试写产品代码,使产品代码通过测试。
1.先创建一个test文件夹,修改其属性用来存放测试代码。
2.在src中新建.java文件,用来编写产品代码。
3.创建产品代码中的测试类,并存放到测试文件夹text中。
4.根据需求编写测试代码。
试验测试代码:
输入测试代码:
5.因为没有产品代码,测试代码存在错误,接下来,输入产品代码。
此时,测试代码运行成功
(三)用UML中的类图来描述类
这个实验我是在实验楼上做的:
(四)练习
使用TDD的方式设计关实现复数类Complex。
1.PSP(Personal Software Process)
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 20分钟 | 7.7% |
设计 | 60分钟 | 23% |
代码实现 | 120分钟 | 46% |
测试 | 40分钟 | 15% |
分析总结 | 20分钟 | 7.7% |
- 实现要有伪代码,产品代码,测试代码。
伪代码:
ComplexNumber() 构造函数,将实部,虚部都置为0
ComplexNumber(double r, double I) 构造函数,创建复数对象的同时完成复数的实部,虚部的初始化
GetRealPart() 获取实部
GetImaginaryPart() 获取虚部
SetRealPart(double d) 设置实部
SetImaginaryPart(double d) 设置虚部
ComplexAdd(ComplexNumber c) 复数相加
ComplexAdd(double c) 复数相加
ComplexMinus(ComplexNumber c) 复数相减
ComplexMinus(double c) 复数相减
ComplexMulti(ComplexNumber c) 复数相乘
ComplexMulti(double c) 复数相乘
实现复数运算:
创建复数对象a,b,c.
设置a,b的实部和虚部。
分别计算:
c=a+b;
c=a-b;
c=a*b;
产品代码:
class Complex {
private double m_dRealPart;//实部
private double m_dImaginPart;//虚部
Complex(double m_dRealPart,double m_dImaginPart){
this.m_dImaginPart=m_dImaginPart;
this.m_dRealPart=m_dRealPart;
}
public void ComplexNumber(){//将实部,虚部都置为0
this.m_dImaginPart=0;
this.m_dRealPart=0;
}
public void ComplexNumber(double R, double I){//构造函数,创建复数对象的同时完成复数的实部,虚部的初始化
this.m_dRealPart=R;
this.m_dImaginPart=I;
}
public double GetRealPart(){//获取实部
return this.m_dRealPart;
}
public double GetImaginaryPart(){//获取虚部
return this.m_dImaginPart;
}
public void SetRealPart(double d){//设置实部
this.m_dRealPart=d;
}
public void SetImaginaryPart(double d){//设置虚部
this.m_dImaginPart=d;
}
public void ComplexAdd(Complex a,Complex b){//加法
this.m_dRealPart=a.GetRealPart()+b.GetRealPart();
this.m_dImaginPart=a.GetImaginaryPart()+b.GetImaginaryPart();
System.out.printf("a+b=%.2f+%.2fi%n",this.m_dRealPart,this.m_dImaginPart);
}
public void ComplexMinus(Complex a,Complex b){//减法
this.m_dRealPart=a.GetRealPart()-b.GetRealPart();
this.m_dImaginPart=a.GetImaginaryPart()-b.GetImaginaryPart();
System.out.printf("a-b=(%.2f)+(%.2fi)%n",this.m_dRealPart,this.m_dImaginPart);
}
public void CComplexMulti(Complex a,Complex b){ //乘法
this.m_dRealPart=a.m_dRealPart*b.m_dRealPart-a.m_dImaginPart*b.m_dImaginPart;
this.m_dImaginPart=a.m_dImaginPart*b.m_dRealPart+a.m_dRealPart*b.m_dImaginPart;
System.out.printf("a*b=%.2f+%.2fi%n",this.m_dRealPart,this.m_dImaginPart);
}
}
public class ComplexCount {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
Complex a=new Complex(0,0); //建立实例
Complex b=new Complex(0,0);
Complex c=new Complex(0,0);
System.out.println("请输入a的实部和虚部");
double r1=scanner.nextDouble();
double i1=scanner.nextDouble();
System.out.println("请输入b的实部和虚部");
double r2=scanner.nextDouble(); //输入实部和虚部
double i2=scanner.nextDouble();
a.SetRealPart(r1 );
a.SetImaginaryPart(i1);
b.SetRealPart(r2);
b.SetImaginaryPart(i2);
c. ComplexAdd(a,b); //加法
c. ComplexMinus(a,b); //减法
c. CComplexMulti(a,b); //乘法
}
}
运行结果:
测试代码:
public class test {
public static void main(String[] args) {
Complex testa = new Complex(1, 2);
Complex testb = new Complex(3, 5);
Complex testc = new Complex(0, 0);
testc.ComplexAdd(testa,testb);
if(testc.GetRealPart()==4&&testc.GetImaginaryPart()==7)
System.out.println("test passed!");
else
System.out.println("test failed!");
}
}
测试结果:
4.总结单元测试的好处
不容易遗漏细节上的设计,使问题考虑的更全面,可以使代码更友好。
205315Java实验二实验报告的更多相关文章
- 20145120 《Java程序设计》实验二实验报告
20145120 <Java程序设计>实验二实验报告 实验名称:Java面向对象程序设计 实验目的与要求: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握U ...
- 2015526 《Java程序设计》实验二实验报告
2015526 <Java程序设计>实验二实验报告 一.单元测试和TDD 用程序解决问题时,要学会写以下三种代码: 伪代码 产品代码 测试代码 正确的顺序应为:伪代码(思路)→ 测试代码( ...
- 20155301 《Java程序设计》实验二实验报告
20155301 <Java程序设计>实验二实验报告 一.单元测试和TDD 用程序解决问题时,要学会写以下三种代码: 伪代码 产品代码 测试代码 正确的顺序应为:伪代码(思路)→ 测试代码 ...
- 20145314郑凯杰 《Java程序设计》实验二 实验报告
20145314郑凯杰 <Java程序设计>实验二 实验报告 实验要求 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用 ...
- 20145328 《Java程序设计》实验二实验报告
20145328 <Java程序设计>实验二实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 ...
- Java实验二实验报告:java面向对象程序设计
java实验二实验报告 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 实验 ...
- 20155235 《Java程序设计》 实验二 实验三 敏捷开发与XP实践
20155235 <Java程序设计> 实验二 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验内容 没有Linux基础的同学建议先学习<Linux基础入 ...
- 实验二实验报告 20135324&&20135330
北京电子科技学院(BESTI) 实 验 报 告 课程: 深入理解计算机系统 班级: 1353 姓名: 杨舒雯 张若嘉 学号: 20135324 20135330 成绩: 指导教师: 娄嘉鹏 实验日期: ...
- 《Java程序设计》实验二 实验报告
实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.没有Lin ...
随机推荐
- Delphi的保存文件对话框-TsaveDialog
TsaveDialog继承于TOpenDialog,只介绍以下几个内容: 1.TsaveDialog如何设定为保存的默认路径是当前程序所在的文件夹: 默认目录是当前程序所在目录应设置属性Initial ...
- Flask中的session和cookie以及日志
一.笔记一session: 首先对于session在flask中应该是加密签名的cookie,所以要先生成secret_key app.secret_key = os.environ.get('SEC ...
- OC开发_Storyboard——NaviationController简单例子
一个简单的Navigation的例子,demo里面用到了上一个demo的MVC,可以参考下:http://www.cnblogs.com/daomul/p/4426063.html 建立一个Nav其实 ...
- Linux系统下 MongoDB安装搭建
1.下载linux的mongodb 2.在目录usr/local下创建文件夹mongodb,把安装包解压到该文件夹中 # mkdir mongodb # tar -zxvf mongodb-3.4.2 ...
- HI3518E用J-link烧写裸板fastboot u-boot流程
Hi3518E的裸板烧写fastboot是不能像HI3531那样,可以通过FB直接烧写.遵循ARM9的烧写流程.其中一般u-boot的烧写流程可分为几类:第一:通过编程器芯片直接烧写:第二通过RVDS ...
- scrapy爬虫系列之三--爬取图片保存到本地
功能点:如何爬取图片,并保存到本地 爬取网站:斗鱼主播 完整代码:https://files.cnblogs.com/files/bookwed/Douyu.zip 主要代码: douyu.py im ...
- Django 的 Form组件
Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 Form类的使用: 1.定义规则: from ...
- cocos2d 特效
一.特效概念 特效是让精灵(CCSprite)执行某种特殊的效果.其实,特效也是一种动画! 但是,为什么要把特效与动画区分呢?因为,特效是基于网格属性来进行的. 如何区分动画与特效?简单的将,当使用到 ...
- (2.15)Mysql之SQL基础——开发设计最佳规范
(2.15)Mysql之SQL基础——开发设计最佳规范 关键字:mysql三大范式,mysql sql开发规范 分析: show profile.mysqllsla.mysqldrmpslow.exp ...
- HDFS的工作流程分析
HDFS的工作机制 概述 HDFS集群分为两大角色:NameNode.DataNode NameNode负责管理整个文件系统的元数据 DataNode 负责管理用户的文件数据块 文件会按照固定的大小( ...