java 中比较按模复数大小,实验二 Java面向对象程序设计

北京电子科技学院(BESTI)

实验报告

课程:Java程序设计                     班级:1352

姓名:(按贡献大小排名)闫佳歆

学号:(按贡献大小排名)20135202

成绩:             指导教师:娄佳鹏       实验日期:2015.5.8

实验密级:         预习程度:             实验时间:15:30-18:00

仪器组次:          必修/选修:必修        实验序号:2

实验名称:Java面向对象程序设计

实验目的与要求:

实验内容

1.初步掌握单元测试和TDD

2.理解并掌握面向对象三要素:封装、继承、多态

3.初步掌握UML建模

4.熟悉S.O.L.I.D原则

5.了解设计模式

实验要求

1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》课程

2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

3.严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

4.请大家先在实验楼中的~/Code目录中用自己的学号建立一个目录,代码和UML图要放到这个目录中,截图中没有学号的会要求重做,然后跟着下面的步骤练习。

【实验仪器】

名称

型号

数量

PC

TOSHIBA

1

虚拟机

实验楼

1

【实验内容】

(一)单元测试

(1) 三种代码

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

(二)面向对象三要素

(1)抽象

(2)封装、继承与多态

(三)设计模式初步

(1)S.O.L.I.D原则

(2)模式与设计模式

(3)设计模式实示例

(四)练习

1使用TDD的方式设计关实现复数类Complex。

3. 实现要有伪代码,产品代码,测试代码。

【实验步骤】

1.以学号为名称建立文件夹

20181022191125671477.png

实验一:

(1)单元测试

20181022191126334589.png

这是在我电脑里的文件

20181022191126955706.png

20181022191127559245.png

测试代码:

20181022191128053405.png

更多的测试代码:

20181022191128655967.png

20181022191129549556.png

测试出错情况:

20181022191130128680.png

20181022191130727336.png

20181022191131292787.png

(2)TDD测试方法:

20181022191131589673.png

建立一个源文件

20181022191132149265.png

建立测试文件

20181022191132766476.png

测试用例

20181022191133475488.png

实现代码:

20181022191133972577.png

20181022191134597601.png

测试运行:

20181022191135446267.png

错误:

20181022191136002929.png

进行改正

20181022191136466814.png

成功:

20181022191137131878.png

20181022191137830147.png

需要改这个条件:

20181022191138452242.png

然后就通过了:

20181022191138798935.png

实验二:

20181022191139583144.png

20181022191140250162.png

打开umbrello

20181022191140946478.png

20181022191141963119.png

建立一个类

20181022191142618417.png

20181022191143295201.png

20181022191143866512.png

20181022191144768890.png

20181022191145289418.png

20181022191145807993.png

20181022191146719161.png

20181022191147436962.png

20181022191147977021.png

保存到指定文件夹

20181022191148490713.png

继承:

20181022191149225116.png

20181022191149981005.png

20181022191150476141.png

20181022191151245702.png

20181022191151735955.png

对应代码:

20181022191152487937.png

20181022191153228200.png

实验三:

20181022191153986041.png

20181022191154718491.png

对应代码:

20181022191155478286.png

20181022191156250777.png

20181022191156982250.png

四,练习:

1.伪代码:

伪代码:

Complex类要输出实部,输出虚部,并按照a+bi的形式输出复数。

Complex类中有两个变量,实部RealPart和虚部ImaginePart;

方法:

getRealPart(int RealPart);返回实部

getImaginePart(int ImaginePart);返回虚部

toString(int RealPart,int ImaginePart);将复数输出成a+bi的格式。

2.测试代码:

import org.junit.Test;

import junit.framework.TestCase;

public class MyComplexTest extends TestCase {

@Test

public void testRealPart() {

assertEquals(1, MyComplex.getRealPart(1));

assertEquals(-1, MyComplex.getRealPart(-1));

assertEquals(5, MyComplex.getRealPart(5));

assertEquals(22, MyComplex.getRealPart(22));

assertEquals(-100, MyComplex.getRealPart(-100));

assertEquals(0, MyComplex.getRealPart(0));

}

@Test

public void testImaginePart(){

assertEquals(1, MyComplex.getImaginePart(1));

assertEquals(-1, MyComplex.getImaginePart(-1));

assertEquals(5, MyComplex.getImaginePart(5));

assertEquals(22, MyComplex.getImaginePart(22));

assertEquals(-100, MyComplex.getImaginePart(-100));

assertEquals(0, MyComplex.getImaginePart(0));

}

@Test

public void testtoString(){

assertEquals("1+2i", MyComplex.toString(1,2));

assertEquals("1-4i", MyComplex.toString(1,-4));

assertEquals("19", MyComplex.toString(19,0));

assertEquals("-3i", MyComplex.toString(0,-3));

assertEquals("0", MyComplex.toString(0,0));

}

}

3.产品代码:

public class MyComplex {

static int r;

static int i;

public static int getRealPart(int RealPart){

r = RealPart;

return r;

}

public static int getImaginePart(int ImaginePart){

i = ImaginePart;

return i;

}

public static String toString (int RealPart,int ImaginePart){

if(RealPart==0 && ImaginePart==0)

return "0";

else if(RealPart == 0)

return ImaginePart+"i";

else if(ImaginePart == 0)

return RealPart+"";

else

{

if(ImaginePart>0)

return RealPart+"+"+ImaginePart+"i";

else if(ImaginePart<0)

return RealPart+""+ImaginePart+"i";

}

return "Wrong!";

}

}

20181022191157491059.png

20181022191158259643.png

20181022191158844626.png

20181022191159303628.png

【实验体会】

这次试验中对我来说比较困难的是在最后的Complex类的实现上,一开始是不知道Complex需要实现什么方法,然后是对TDD的方法不是很熟悉,也不知道需要测试什么。所以一开始我是比对着之前的例子一点点改测试实例,又针对测试去写源代码。

写源代码的过程中出现的问题主要有,输出复数的时候,如果系数是1要省略,如果实部或者虚部是0要省略,如果虚部是负数需要把加号改成减号,这一堆if-else的累加花费了我不少时间。

在把这里调通之后,另一个难题在静态,因为我在方法中错误的使用了this关键字,导致方法不能静态,导致测试实例中不能调用非静态方法而出现错误。后来我发现根本就不需要this,直接做赋值返回就好,这就解决了第二个难题。

还有一个难题,就是在以a+bi的形式返回复数时,怎样把返回值表示为String类型,同时又能保证格式。最后我用了+这个连接符来做。

这次实验中,我不光学习到了很多开发过程中的原则,也体会到了自己的知识掌握的并不牢靠,只是简单的记忆,并不能活学活用,这就需要我在今后的学习生活中多加练习。

步骤

耗时

百分比

需求分析

10min

13.3%

设计

15min

20%

代码实现

20min

26.7%

测试

20min

26.7%

分析总结

10min

13.3%

原文:http://www.cnblogs.com/20135202yjx/p/4483694.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值