2018-2019-20175203 实验二 《Java面向对象程序设计》实验报告

实验要求

  • 没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
  • 完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
  • 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

    实验步骤

    (一)单元测试

    (1)三种代码

  • 伪代码:从意图层面来解决问题
  • 产品代码:实现预期功能
  • 测试代码:测试预期功能

    (2)单元测试:对类实现的测试

    单击file > new > project之后一路next即可,由于本次实验需要junit,我就先在实验前对其进行安装,唯一需要注意的是要导出在下载文件的时候的那俩文件(junit开头的那俩)才能使用,那么教训就来了,千万别把它的下载文件夹放的太深!!!这样你每建一个新项目就要找十多个文件夹才能找到。。。。(当然你也可以亡羊补牢,在第一次找到之后就把那个IDEA—U文件夹导出来)
    接下来就是本次实验了,这个不得不说老师给的太详细了(如果你是用蓝墨云的链接进入的而不是直接在博客里打开的话,,,(博客里直接打开好多图片都损毁了))只要顺着老师的过程往下走就顺理成章的出来了,要提的一句就是点击public类名称再点击小灯泡create test选择Junit3即可新建test类
    *错误情况

*边界情况

*通过测试截图

注意测试前一定要有注解@test

(3)以 TDD的方式研究学习StringBuffer

这里需要安装·Junit,由于在前文提到就不再过多赘述了,然后说一下TDD,在我看来就是一种逆向思维,原始的是先通过作出程序产品再进行检测,其实这个往往是会出现遗漏的,但是将其逆向就变得干净有效了,这个有点像食品安全检测,现制定一个检测标准(即test类)所有的食品(产品代码)放到里边进行测试,不通过就不让生产(测试不通过,重新写),这样往往对漏洞能有较全面的筛查。
根据实验要求编写代码

import junit.framework.TestCase;
import org.junit.Test;
public class StringBufferDemoTest extends TestCase {StringBuffer buffer = new StringBuffer("StringBuffer");@Testpublic void testcharAt(){assertEquals('S',buffer.charAt(0));}@Testpublic void testcapacity(){assertEquals(28,buffer.capacity());}@Testpublic void testindexof(){assertEquals(1,buffer.indexOf("tring"));}@Testpublic void testtoString(){assertEquals("StringBuffer",buffer.toString());}
}

测试截图

用自己的学号%6进行取余运算,根据结果进行代码扩充:
0: 让系统支持Byte类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
1: 让系统支持Short类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
2: 让系统支持Boolean类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
3: 让系统支持Long类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
4: 让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
5: 让系统支持Double类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
我的学号为5203即选则支持Short类
*实验代码

// Server Classes
abstract class Data {abstract public void DisplayValue();
}
class Integer extends  Data {int value;Integer() {value=100;}public void DisplayValue(){System.out.println (value);}
}
class Short extends Data {short value;Short() {value = 5203;}public void DisplayValue(){System.out.println (value);}
}
// Pattern Classes
abstract class Factory {abstract public Data CreateDataObject();
}
class IntFactory extends Factory {public Data CreateDataObject(){return new Integer();}
}
class ShortFactory extends Factory {public Data CreateDataObject(){return new Short();}
}
//Client classes
class Document {Data pd;Document(Factory pf){pd = pf.CreateDataObject();}public void DisplayData(){pd.DisplayValue();}
}
//Test class
public class MyDoc {static Document d;public static void main(String[] args) {d = new Document(new ShortFactory());d.DisplayData();}
}

*运行截图如下

(4)以TDD的方式开发一个复数类Complex,要求如下:

// 定义属性并生成getter,setter
double RealPart;
double ImagePart;
// 定义构造函数
public Complex()
public Complex(double R,double I)

//Override Object
public boolean equals(Object obj)
public String toString()

// 定义公有方法:加减乘除
Complex ComplexAdd(Complex a)
Complex ComplexSub(Complex a)
Complex ComplexMulti(Complex a)
Complex ComplexDiv(Complex a)

以TDD的方式进行开发,即先进行测试代码的编写,如下:

import junit.framework.TestCase;
import org.junit.Test;public class ComplexTest extends TestCase {Complex a = new Complex(5.0, 6.0);Complex b = new Complex(-3.0, 4.0);@Testpublic void testgetRealPart() {assertEquals(5.0,a.getRealPart());assertEquals(-3.0,b.getRealPart());}@Testpublic void testgetImagePart() {assertEquals(6.0,a.getImagePart());assertEquals(4.0,b.getImagePart());}@Testpublic void testtoString() {assertEquals("Complex{RealPart=5.0, ImagePart=6.0}",a.toString());assertEquals("Complex{RealPart=-3.0, ImagePart=4.0}",b.toString());}@Testpublic void testequals() {assertEquals(false,a.equals(b));Complex c = new Complex(a.getRealPart(),a.getImagePart());assertEquals(true,a.equals(c));}@Testpublic void testComplexAdd() {assertEquals(2.0,a.ComplexAdd(b).getRealPart());assertEquals(10.0,a.ComplexAdd(b).getImagePart());}@Testpublic void testComplexSub() {assertEquals(8.0,a.ComplexSub(b).getRealPart());assertEquals(2.0,a.ComplexSub(b).getImagePart());}@Testpublic void testComplexMulti() {assertEquals(-39.0,a.ComplexMulti(b).getRealPart());assertEquals(2.0,a.ComplexMulti(b).getImagePart());}@Testpublic void testComplexDiv() {assertEquals(0.36,a.ComplexDiv(b).getRealPart());assertEquals(-1.52,a.ComplexDiv(b).getImagePart());}
}

接下来是产品代码开发

public class Complex {public double getRealPart() {return RealPart;}public double getImagePart() {return ImagePart;}double RealPart;double ImagePart;public void setRealPart(double realPart) {RealPart = realPart;}public void setImagePart(double imagePart) {ImagePart = imagePart;}public Complex(){}public Complex(double R,double I){this.ImagePart = I;this.RealPart = R;}@Overridepublic String toString() {return "Complex{" +"RealPart=" + RealPart +", ImagePart=" + ImagePart +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Complex complex = (Complex) o;return Double.compare(complex.getRealPart(), getRealPart()) == 0 &&Double.compare(complex.getImagePart(), getImagePart()) == 0;}Complex ComplexAdd(Complex a) {return new Complex(this.RealPart + a.RealPart,this.ImagePart + a.ImagePart);}Complex ComplexSub(Complex a){return new Complex(this.RealPart - a.RealPart,this.ImagePart - a.ImagePart);}Complex ComplexMulti(Complex a){return new Complex(this.RealPart*a.RealPart-this.ImagePart*a.ImagePart,this.ImagePart*a.RealPart+this.RealPart*a.ImagePart);}Complex ComplexDiv(Complex a){double scale = a.getRealPart()*a.getRealPart() + a.getImagePart()*a.getImagePart();Complex b = new Complex(a.getRealPart() / scale, - a.getImagePart() / scale);return this.ComplexMulti(b);}
}

*测试截图

(5)使用StarUML对实验二中的代码进行建模

这里要先道个歉,,,由于之前着急提交蓝墨云而且自己的电脑还没下这个软件,就草草的用别人的电脑做了一个,,,但是后来发现线上的processon也挺好用的,截图如下

转载于:https://www.cnblogs.com/20175203mayuda/p/10723150.html

2018-2019-20175203 实验二 《Java面向对象程序设计》相关推荐

  1. 20175333曹雅坤 实验二 Java面向对象程序设计

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

  2. java面向对象实验结论及心得_20162305 实验二 Java面向对象程序设计 实验报告

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

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

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

  4. 20135234mqy 实验二 Java面向对象程序设计

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1352  姓名:mqy  学号:20135234 成绩:             指导教师:娄嘉 ...

  5. java程序面向对象show,20165309 实验二 Java面向对象程序设计

    2017-2018-2 20165309实验二<Java面向对象程序设计>实验报告 一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初 ...

  6. 实验二 Java面向对象程序设计

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计                         班级:1353            姓名:陈巧然     ...

  7. Java面向对象程序设计实训教程_JAVA课程实验报告 实验二 JAVA面向对象程序设计...

    课程:Java程序设计  班级:1352  姓名:黄伟业  学号:20135315 成绩:             指导教师:娄嘉鹏    实验日期:2015.5.7 实验密级:         预习 ...

  8. Java第二次实验报告——Java面向对象程序设计

    北京电子科技学院(BESTI) 实    验    报    告 课程名称:java程序设计实验      班级:1352         姓名:洪韶武      学号:20135219 成绩:   ...

  9. 实验二《面向对象程序设计》_实验报告

    实验二<面向对象程序设计>_实验报告 一.实验前期预习准备 Junit的安装和配置 选择File->Setting打开设置对话框,在设置对话框中选择Plugins, 单击Instal ...

  10. java构成对象的三要素_20155237 《JAVA程序设计》实验二(JAVA面向对象程序设计)实验报告...

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

最新文章

  1. 用Python分析了十年电影票房,原来我错过了这么多好电影!
  2. 数据结构c语言函数大全,数据结构习题库(c语言版).doc
  3. 数据结构----内存分配问题
  4. VUE中让由全局变量添加生成的新数组不随全局变量的变化而变化
  5. Wrong permissions on configuration file, should not be world writable!
  6. 分享10个实用的超绚CSS3按钮设计
  7. Guojiz网址导航系统PHP网站源码
  8. 【HTML】使用css3和html给网站添加上春节灯笼特效
  9. 【实用工具】之在VS中使用自定义工具配置nasm/yasm
  10. 页面内部DIV让点击外部DIV 事件不发生(阻止冒泡事件)
  11. 【数据结构】思维导图补充知识
  12. MSB与LSB的含义
  13. USES_CONVERSION W2A
  14. ibatis.net:尽可能的使用匿名类型替换 Hashtable
  15. 软件需求说明书-总务办公管理系统
  16. overleaf官网登录注册报错:Sorry, we could not verify that you are not a robot.
  17. 同程容器云平台网络方案演进
  18. 遥感图像处理之计算植被覆盖度公式
  19. 只需一个损失函数,一个超参数即可压缩BERT,MSRA提模型压缩新方法
  20. 【polar码】polar编译码以及SC译码算法的matlab仿真验证,对比不同编码码率的误码率性能

热门文章

  1. 2018年度报告单_2018年度最佳在线IT课程
  2. java 对象深度复制_Java深度复制– Java复制对象
  3. Android Google Map –两点之间的绘图路线
  4. 开课吧Java课堂:如何将用户定义的类存储于Collection中
  5. Java基础篇:什么是线程优先级?
  6. 哪些多年前已从iBoxDB内核中移出的功能
  7. Android 逆向分析(三)之动态调试Smali
  8. ASP.NET 导入 Excel
  9. The system is running in low-graphics mode
  10. C# WinForm开发系列 - Thread/Delegate/Event