博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20165226第二次实验
阅读量:6866 次
发布时间:2019-06-26

本文共 4148 字,大约阅读时间需要 13 分钟。

实验二 面向对象程序设计

实验目的

  • 一、提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号。考查JUnit会不会使用,测试用例至少要包含正常情况,错误情况,边界情况的测试。
  • 二、以 TDD的方式研究学习StringBuffer。
  • 三、对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式。
  • 四、以TDD的方式开发一个复数类Complex。

实验内容及步骤

(一)使用JUnit,测试用例

  • 在插件安装对话框的搜索中输入junit,单击JunitGenerator V2.0,单击绿色的Install按钮安装。因为我没有次插件,因此实在网上download到本地,再install plugin from disk

    1047870-20180414173128430-1213012577.png

  • 进行项目及文件的创建
    • 创建项目
    • 创建文件
    • create Test(创建JUnit3)
    • 增加测试用例(附产品代码)
      1047870-20180414173549994-974797506.png
    • 测试项目结果如下图所示(含正常、异常、边界)
      1047870-20180414173637829-345251585.png
      显示green bar,测试通过。

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

  • 新建类
  • 以 TDD的方式研究学习StringBuffer,用junit进行单元测试

  • 运行结果如图

1047870-20180414195549249-420891361.png

(三)体会OCP原则和DIP原则的应用,初步理解设计模式

  • 原代码
class Integer {    int value;       public Integer(){      value=100;     }       public void DisplayValue(){        System.out.println(value);     } } class Document {    Integer pi;    public Document(){       pi = new Integer();    }    public void DisplayData(){      pi.DisplayValue();     } } public class MyDoc{    static Document d;   public static void main(String [] args) {         d = new Document();         d.DisplayData();   } }

让系统支持Boolean类,Document类要修改构造方法,这还违反了OCP原则。封装、继承、多态解决不了问题,在则需要设计模式。

abstract class Data {    abstract public void DisplayValue();}class Integer extends  Data {    int value;    Integer() {        value=100;    }    public void DisplayValue(){        System.out.println (value);    }}class Boolean extends Data {    boolean value;    Boolean() {        value = true;    }    public void DisplayValue(){        System.out.println (value);    }}// Pattern Classesabstract class Factory {    abstract public Data CreateDataObject();}class IntFactory extends Factory {    public Data CreateDataObject(){        return new Integer();    }}class BooleanFactory extends Factory {    public Data CreateDataObject(){        return new Boolean();    }}//Client classesclass Document {    Data pd;    Document(Factory pf){        pd = pf.CreateDataObject();    }    public void DisplayData(){        pd.DisplayValue();    }}//Test classpublic class MyDoc {    static Document d;    public static void main(String[] args) {        d = new Document(new BooleanFactory());        d.DisplayData();    }}

如此,再class Boolean extends Dataclass BooleanFactory extends Factory即可使系统支持Boolean

  • 运行结果

1047870-20180416003738597-2128962009.png

(四)以TDD的方式开发一个复数类Complex

  • 要求
// 定义属性并生成getter,setterdouble RealPart;double ImagePart;// 定义构造函数public Complex()public Complex(double R,double I)//Override Objectpublic boolean equals(Object obj)public String toString()// 定义公有方法:加减乘除Complex ComplexAdd(Complex a)Complex ComplexSub(Complex a)Complex ComplexMulti(Complex a)Complex ComplexDiv(Complex a)
  • 代码编写
public class Complex{    private double r;    private double i;    public Complex(double r, double i) {        this.r = r;        this.i = i;    }    public static double getRealPart(double r) {        return r;    }    public static double getImagePart(double i) {        return i;    }    public Complex ComplexAdd(Complex c) {        return new Complex(r + c.r, i + c.i);    }    public Complex ComplexSub(Complex c) {        return new Complex(r - c.r, i - c.i);    }    public Complex ComplexMulti(Complex c) {        return new Complex(r * c.r - i * c.i, r * c.i + i * c.r);    }    public Complex ComplexDiv(Complex c) {        return new Complex((r * c.i + i * c.r)/(c.i * c.i + c.r * c.r), (i * c.i + r * c.r)/(c.i * c.i + c.r * c.r));    }    public String toString() {        String s = " ";        if (i > 0)            s =  r + "+" + i + "i";        if (i == 0)            s =  r + "";        if (i < 0)            s = r + " " + i + "i";        return s;    }}
  • 尝试写测试代码

  • 运行结果

1047870-20180416004123011-1213685157.png

(五)使用对实验二中的代码进行建模,发类图的截图,加上学号水印。类图中只少两个类。

1047870-20180422143140518-1485934428.jpg

遇到问题及解决方案

  • 问题一:看教程,本来应该在插件安装对话框的搜索中输入junit,单击JunitGenerator V2.0,单击绿色的Install按钮安装。但我没有搜到JunitGenerator V2.0

1047870-20180413195618961-1495462617.png

  • 问题一解决方案:通过百度搜索,在网上查找并下载了http://plugins.jetbrains.com/pluginManager/?action=download&id=org.intellij.plugins.junitgen&build=IU-162.2228.15&uuid=6a6cb9f5-4107-46d7-9b1c-d8205218a73b,到本地,然后找到插件所在位置,再install plugin from disk,。

  • 问题二:在进行第二步操作时,出现标红,测试未通过。

1047870-20180414193621801-1328067439.png

  • 问题二解决方案:把数据17换成5就可以了。

统计PSP(Personal Software Process)时间:

步骤 耗时 百分比
设计 120min 50%
代码实现 60 25%
测试 30 12.5%
分析总结 30 12.5%

实验小结

本次实验主要学会了如何使用junit来测试代码。在不断调试中,发现junit有他得天独厚之处,方便,简洁,快速,收获很大。

转载于:https://www.cnblogs.com/musea/p/8847737.html

你可能感兴趣的文章
linux环境变量
查看>>
如何在Debian 8/7上安装PostgreSQL 9.6
查看>>
__sync_fetch_and_add
查看>>
Samba的主配置文件
查看>>
css基础 设置链接颜色
查看>>
我的友情链接
查看>>
CISCO路由器产品配置手册
查看>>
Android 轮询最佳实践 Service + AlarmManager+Thread
查看>>
Android adb常用命令
查看>>
2012组策略自动部署wsus
查看>>
淘宝天猫网站停止支持IE6、IE7浏览器,你还在用xp吗?
查看>>
Jupyter Notebook 添加目录
查看>>
如何在Linux上从命令行嗅探HTTP流量
查看>>
AIX下两个常用命令
查看>>
从抵触到力推,.Net Core 的成功让微软正视开源
查看>>
Loadrunner11如何使用非IE浏览器录制脚本
查看>>
ACL-文件访问控制列表
查看>>
css解决div子元素margin溢出的问题
查看>>
linux内核参数注释与优化
查看>>
grep小练习
查看>>