20145325张梓靖 实验二"Java面向对象程序设计"
20145325张梓靖 实验二"Java面向对象程序设计"
程序设计过程
实验内容
使用TDD的方式设计实现复数类 Complex
编写代码
- 设计实现复数类 Complex,复数类 Complex的方法设计有:定义构造函数、更改复数内容、返回复数内容,以及复数间相加、减、乘运算。
- 设计的Test代码第一代:
import org.junit.Test;
public class ComplexNumberTest {
@Test
public void TestFunction1() {
ComplexNumber complexnumber = new ComplexNumber(3, 5);
;
assert complexnumber.m_dRealPart == 3 : "ComplexNumber(double r,double I)构造函数有错误";
assert complexnumber.m_dImaginPart == 5 : "ComplexNumber(double r,double I)构造函数有错误";
}
@Test
public void TestFunction2() {
ComplexNumber complexnumber = new ComplexNumber();
assert complexnumber.m_dImaginPart == 0 : "ComplexNumber()构造函数有错误";
assert complexnumber.m_dRealPart == 0 : "ComplexNumber()构造函数有错误";
}
@Test
public void TestSetWay() {
ComplexNumber complexnumber = new ComplexNumber();
complexnumber.SetRealPart(1);
complexnumber.SetImaginaryPart(1);
assert complexnumber.m_dRealPart == 1 : "SetRealPart方法有错误";
assert complexnumber.m_dImaginPart == 1 : "SetImaginaryPart方法有错误";
}
@Test
public void TestgetWay() {
ComplexNumber complexnumber = new ComplexNumber();
complexnumber.SetRealPart(3);
complexnumber.SetImaginaryPart(5);
assert complexnumber.GetRealPart() == 3 : "GetRealPart方法有错误";
assert complexnumber.GetImaginaryPart() == 5 : "GetImaginaryPart方法有错误";
}
@Test
public void TestStringWay() {
ComplexNumber complexnumber = new ComplexNumber(3,5);
assert complexnumber.toString()=="3.0+5.0i":"toString方法有错误";
}
@Test
public void TestAddWay1() {
ComplexNumber complexnumber1 = new ComplexNumber(1,1);
ComplexNumber complexnumber2 = new ComplexNumber(2,2);
ComplexNumber complexnumber3=complexnumber1.ComplexAdd1(complexnumber2);
assert complexnumber3.m_dRealPart == 3 : "ComplexAdd方法有错误";
assert complexnumber3.m_dImaginPart == 3 : "ComplexAdd方法有错误";
}
@Test
public void TestAddWay2() {
ComplexNumber complexnumber1 = new ComplexNumber(1,1);
ComplexNumber complexnumber2=complexnumber1.ComplexAdd2(2);
assert complexnumber2.m_dRealPart == 3 : "ComplexAdd方法有错误";
assert complexnumber2.m_dImaginPart == 1 : "ComplexAdd方法有错误";
}
@Test
public void TestMinusWay1() {
ComplexNumber complexnumber1 = new ComplexNumber(1,1);
ComplexNumber complexnumber2 = new ComplexNumber(2,2);
ComplexNumber complexnumber3=complexnumber2.ComplexMinus1(complexnumber1);
assert complexnumber3.m_dRealPart == 1 : "ComplexMinus方法有错误";
assert complexnumber3.m_dImaginPart == 1 : "ComplexMinus方法有错误";
}
@Test
public void TestMinusWay2() {
ComplexNumber complexnumber1 = new ComplexNumber(5,1);
ComplexNumber complexnumber2=complexnumber1.ComplexMinus2(1);
assert complexnumber2.m_dRealPart == 4 : "ComplexMinus方法有错误";
assert complexnumber2.m_dImaginPart == 1 : "ComplexMinus方法有错误";
}
@Test
public void TestMultiWay1() {
ComplexNumber complexnumber1 = new ComplexNumber(3,3);
ComplexNumber complexnumber2 = new ComplexNumber(3,5);
ComplexNumber complexnumber3=complexnumber1.ComplexMulti1(complexnumber2);
assert complexnumber3.m_dRealPart == -6 : "ComplexMinus方法有错误";
assert complexnumber3.m_dImaginPart == 24 : "ComplexMinus方法有错误";
}
@Test
public void TestMultiWay2() {
ComplexNumber complexnumber1 = new ComplexNumber(3,3);
ComplexNumber complexnumber2=complexnumber1.ComplexMulti2(2);
assert complexnumber2.m_dRealPart == 6 : "ComplexMinus方法有错误";
assert complexnumber2.m_dImaginPart == 6 : "ComplexMinus方法有错误";
}
}
- 根据复数类 Complex的设计构思,编写出复数类 Complex的代码
public class ComplexNumber {
public double m_dRealPart;
public double m_dImaginPart;
public ComplexNumber(){
this.m_dImaginPart=0;
this.m_dRealPart=0;
}
public 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 ComplexNumber ComplexAdd1(ComplexNumber c){
this.m_dRealPart=this.m_dRealPart+c.m_dRealPart;
this.m_dImaginPart=this.m_dImaginPart+c.m_dImaginPart;
return this;
}
public ComplexNumber ComplexAdd2(double c){
this.m_dRealPart=this.m_dRealPart+c;
return this;
}
public ComplexNumber ComplexMinus1(ComplexNumber c) {
this.m_dRealPart = this.m_dRealPart - c.m_dRealPart;
this.m_dImaginPart = this.m_dImaginPart - c.m_dImaginPart;
return this;
}
public ComplexNumber ComplexMinus2(double c){
this.m_dRealPart=this.m_dRealPart-c;
return this;
}
public ComplexNumber ComplexMulti1(ComplexNumber c){
double a=this.m_dImaginPart;
double b=this.m_dRealPart;
this.m_dRealPart=b*c.m_dRealPart-(a*c.m_dImaginPart);
this.m_dImaginPart=b*c.m_dImaginPart+a*c.m_dRealPart;
return this;
}
public ComplexNumber ComplexMulti2(double c){
double a=this.m_dImaginPart;
double b=this.m_dRealPart;
this.m_dRealPart=this.m_dRealPart*c;
this.m_dImaginPart=this.m_dImaginPart*c;
return this;
}
public String toString(){
return this.m_dRealPart+"+"+this.m_dImaginPart+"i";
}
}
- 对复数类 Complex的代码进行单元测试
发现错误,是编写的Complex的代码出现了错误?在TestStringWay
中增加输出语句,输出toString
的结果:
没错误啊,答案和预料的一样。那么问题就是Test代码有问题了
所以修改为用
assertFquals
@Test
public void TestStringWay() {
ComplexNumber complexnumber = new ComplexNumber(3,5);
System.out.println(complexnumber.toString());
assertFquals("3.0+5.0i",complexnumber.toString());
}
- 建模结果截图:
20145325张梓靖 实验二"Java面向对象程序设计"的更多相关文章
- 20145325张梓靖 实验一 "Java开发环境的熟悉"
20145325张梓靖 实验一 "Java开发环境的熟悉" 程序设计过程 实验内容 实现凯撒密码,并进行测试 编写代码 使用java.util.Scanner进行输入,而它的方法里 ...
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 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 理解并掌握面相对象三要素:封 ...
- 20145113 实验二 Java面向对象程序设计
20145113 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 1.初 ...
- JAVA课程实验报告 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20145225唐振远 实验二 "Java面向对象程序设计"
20145225<Java程序设计> 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S ...
- 20145208 实验二 Java面向对象程序设计
20145208 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...
随机推荐
- VIM 多行注释与取消
注释: 在使用vim的过程中, 注释是一个比较烦人的事情,要一行一行注释,或者用/* */来注释 下面这种方法可以快捷的进行多行注释. 1.进入vi/vim编辑器,按CTRL+V进入可视化模式(VIS ...
- getOwnPropertyNames() & keys()
1.getOwnPropertyNames方法可以获得对象的所有属性名,并储存于一个数组当中. keys方法只能获取可遍历的属性名并储存于数组. 2.在完成notepad模块模拟的过程中使用了getO ...
- JZOJ.5335【NOIP2017模拟8.24】早苗
Description
- 关于layer.photos即照片显示的问题。
在layer组件中,照片显示是不常用,今天做了一些不伤了. 在这里写出来,以备后用. 其中注意几个问题, 1.格式问题. 2.路径问题. 不同的layer有不同的格式,查看layerAPI中发现的格式 ...
- rpm方式安装 gitlab centos7
一.使用RPM安装 - 推荐 官方推荐的下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/ Tips 1 : Centos 7使用el7 ...
- JQuery 用法总结
1.隐藏与显示,用于div等等 //隐藏id=myTab下的所有li标签 $("#myTab li").hide(); //动画隐藏,1秒内隐藏该对象 $(); //显示class ...
- gradle多项目 svn依赖
当svn有多个子项目且没有根项目的时候,用eclipse拷贝下来是容易出问题的,经常子项目之间的依赖会有问题,还是推荐用IDEA. 操作说明: 如果SVN有 A,B,C,D四个项目,A为web项目,B ...
- poj1934 Trip【线性DP】【输出方案】
Trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3850 Accepted: 1030 Description ...
- fork(2) - Linux man page
fork(2): create child process - Linux man page https://linux.die.net/man/2/fork fork(2) - Linux man ...
- Django权限系统auth模块详解
转自:原文出处 auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理. auth可以和admin模块配合使用, 快速建立网站的管理系统. 在INSTALLED_A ...