zoukankan      html  css  js  c++  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。

    2.实验报告中统计自己的PSP(Personal Software Process)时间

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

    【实验步骤】

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

     

    实验一:

    (1)单元测试

    这是在我电脑里的文件

    测试代码:

    更多的测试代码:

     

    测试出错情况:

    (2)TDD测试方法:

    建立一个源文件

    建立测试文件

    测试用例

    实现代码:

    测试运行:

    错误:

    进行改正

    成功:

    需要改这个条件:

    然后就通过了:

    实验二:

    打开umbrello

    建立一个类

     

    保存到指定文件夹

    继承:

    对应代码:

    实验三:

     

    对应代码:

    四,练习:

    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!";
    }
    }

    【实验体会】

    这次试验中对我来说比较困难的是在最后的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%

  • 相关阅读:
    zkw费用流
    luogu5212/bzoj2555 substring(后缀自动机+动态树)
    后缀数据结构模板2
    后缀数据结构模板1
    通用动态树(Link-Cut Tree)模板
    上下界网络流总结
    多项式多点求值
    拉格朗日反演
    多项式板子·新
    luogu2387 [NOI2014]魔法森林
  • 原文地址:https://www.cnblogs.com/20135202yjx/p/4483694.html
Copyright © 2011-2022 走看看