北京电子科技学院(BESTI)

             

课程:Java程序设计 班级:1353  姓名:李海空  学号:20135329

成绩:             指导教师:娄嘉鹏      实验日期:2015.5.7

实验密级:         预习程度:         实验时间:

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

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

实验目的与要求:实验内容

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

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

3. 初步掌握UML建模

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

5. 了解设计模式

实验要求

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

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

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

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

实验仪器:

名称

型号

数量

PC

1

实验步骤

(一)单元测试

实验结果

增加测试内容后,修改MyUtil中代码,使条变成绿色

(二)面向对象三要素

实验结果

(四)练习

实验步骤

1使用TDD的方式设计关实现复数类Complex.
2.实验报告中统计自己的PSP(Personal Software Process)时间
3. 实现要有伪代码,产品代码,测试代码。
4.总结单元测试的好处

实验代码

了解:

1)复数类ComplexNumber的属性

realPart: 实部,代表复数的实数部分

imaginPart: 虚部,代表复数的虚数部分

2)复数类ComplexNumber的方法

ComplexNumber() 构造函数,将实部,虚部都置为0

ComplexNumber(double r, double i) 构造函数,创建复数对象的同时完成复数的实部,虚部的初始化

getRealPart() 获取实部

getImaginaryPart() 获取虚部

getRealPart(double d) 设置实部

getImaginaryPart(double d) 设置虚部

add(ComplexNumber c) 复数相加

add(double c) 复数相加

minus(ComplexNumber c) 复数相减

minus(double c) 复数相减

ComplexMulti(ComplexNumber c)  复数相乘

ComplexMulti(double c)  复数相乘

toString() 把当前复数对象的实部,虚部组合成a+bi的字符串形式

伪代码:
//复数类
类有虚部实部
复数的加法运算;
复数的减法运算;
复数的乘法运算;
复数的除法运算;

产品代码:
public class ComplexDemo {
// main方法
public static void main(String[] a) {
Complex b = new Complex(2, 5);
Complex c = new Complex(3, -4);
System.out.println(b + "+" + c + "=" + b.add(c));
System.out.println(b + "-" + c + "=" + b.minus(c));
System.out.println(b + "*" + c + "=" + b.multiply(c));
System.out.println(b + "/" + c + "=" + b.divide(c));
}
}

// Complex类
class Complex {
private double m;// 实部
private double n;// 虚部

public Complex(double m, double n) {
this.m = m;
this.n = n;
}

// add
public Complex add(Complex c) {
return new Complex(m + c.m, n + c.n);
}

// minus
public Complex minus(Complex c) {
return new Complex(m - c.m, n - c.n);
}

// multiply
public Complex multiply(Complex c) {
return new Complex(m * c.m - n * c.n, m * c.n + n * c.m);
}

// divide
public Complex divide(Complex c) {
double d = Math.sqrt(c.m * c.m) + Math.sqrt(c.n * c.n);
return new Complex((m * c.m + n * c.n) / d, Math.round((m * c.n - n * c.m) / d));
}

public String toString() {
String rtr_str = "";
if (n > 0)
rtr_str = "(" + m + "+" + n + "i" + ")";
if (n == 0)
rtr_str = "(" + m + ")";
if (n < 0)
rtr_str = "(" + m + n + "i" + ")";
return rtr_str;
}
}

测试代码:

public static ComplexTest{
public static void main(String[] args){
class Complex {

private double m;// 实部
private double n;// 虚部

public Complex(double m, double n) {
this.m = m;
this.n = n;
}

public String toString() {
String rtr_str = "";
if (n > 0)
rtr_str = "(" + m + "+" + n + "i" + ")";
if (n == 0)
rtr_str = "(" + m + ")";
if (n < 0)
rtr_str = "(" + m + n + "i" + ")";
return rtr_str;
  }

}

}

}

步骤

耗时

百分比

需求分析

 30min

21%

设计

 20min

14%

代码实现

 1h

42%

测试

 30min

21%

分析总结

单元测试用于检测代码是否有bug,在能考虑到的、可能会出现问题的地方,用单元检测发现问题很快速。

实验收获

  这次实验花了很多时间,但我也收获了很多。首先,通过这次实验,我对虚拟机的使用更加熟悉。

学习了单元测试,提升了自己的能力,知道了要对自己的代码负责,给别人的代码尽量别有bug,同时也教会我以后在编写程序的时候要考虑到各种可能性,以提高代码的安全性。通过这次实验,我还知道了设计模式,我觉得通过每一次的java实验,不仅提高了我的学习能力,增长了知识,更学到了学习的方法,会在今后更好的学习。

Java程序设计 实验二 Java面向对象程序设计的更多相关文章

  1. 20155202 《Java程序设计》实验二(面向对象程序设计)实验报告

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

  2. 20155239《Java程序设计》实验二(面向对象程序设计)实验报告

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

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

    20165308 实验二 Java面向对象程序设计 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:张士洋 学号:20165308 指导教师:娄嘉鹏 ...

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

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

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

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

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

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

  7. 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告

    20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...

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

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

  9. JAVA课程实验报告 实验二 Java面向对象程序设计

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

随机推荐

  1. hdu 1059 Dividing

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  2. BZOJ3542:DZY Loves March

    询问是要求 $\sum_{i=1}^n((x[i]-a)^2+(y[i]-b)^2)(x[i]=a||y[i]=b)$ 即求 $\sum_{i=1}^n(x[i]-a)^2(y[i]=b)+\sum_ ...

  3. word 批量修改表格格式

    For i = 1 To ActiveDocument.Tables.Count ActiveDocument.Tables(i).Cell(1, 1).Select With Selection . ...

  4. Sphinx 实时索引

    index rt { type = rt rt_mem_limit = 512M path = /usr/local/sphinx/data/rt rt_field = title rt_field ...

  5. 警惕自己,不断学习c++【转】

    每天早上起床看一遍,时刻警惕自己,每天至少要浏览http://www.cplusplus.com 1.把C++当成一门新的语言学习(和C没啥关系!真的.):2.看<Thinking In C++ ...

  6. 基于S5PC100裸机程序之SPI(上)

    作者:杨老师,华清远见嵌入式学院讲师. SPI作为应用最为广泛的通信总线协议之一,开发人员应当掌握,本章将介绍SPI总线协议的基本理论,以及S5PC100的SPI总线控制器的操作方法. 1. SPI总 ...

  7. node.js不得不说的12点内容

    1.node.js,服务器端的javascript,它允许在后端(脱离浏览器环境)运行javascript代码. 2.事件驱动.异步式I/O的编程模式(单线程)是其核心. 3.node.js的java ...

  8. MySQL数据库迁移(转)

    MySQL数据库迁移(数据文件直接迁移) 在今年10月下旬的时候,公司的服务器需要迁移,其中涉及到了MySQL数据库迁移.查看了一下MySQL数据文件的大小,接近60G的大小(实际数据并没用那么多). ...

  9. web页面实现指定区域打印功能

    web页面实现指定区域打印功能 使用CSS,定义一个.noprint的class,将不打印的内容放入这个class内. 详细如下: <style media=print type="t ...

  10. Stereo Matching 立体匹配学习资料

    Middlebury Stereo Evaluation Camera Calibration and 3D Reconstruction OpenCV学习笔记(18)双目测距与三维重建的OpenCV ...