实验内容

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

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

3. 初步掌握UML建模

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

5. 了解设计模式

(一)单元测试

(1) 三种代码

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

(二)面向对象三要素

(1)抽象

利用循环结构来简化代码(此处并没有编码)

(2)封装、继承与多态、

(三)设计模式初步

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

  • SRP(Single Responsibility Principle,单一职责原则)
  • OCP(Open-Closed Principle,开放-封闭原则) ————软件实体(类,模块,函数等)应该对扩充开放,对修改封闭。
    • 手段实现:(1)抽象和继承(2)面向接口编程
  • LSP(Liskov Substitusion Principle,Liskov替换原则)
  • ISP(Interface Segregation Principle,接口分离原则)
  • DIP(Dependency Inversion Principle,依赖倒置原则)

(2)模式与设计模式

(3)设计模式实示例

四)练习

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

伪代码:

1. Z = a(实部) + bi(虚部);
2.相加:实数部与实部相加,虚部与虚部相加
3.相减:实部与实部相减,虚部与虚部相减
4.相乘
A*B=ac-bd+(ad+bc)i
A=a+bi, B=c+di
5.显示一个复数
虚部为负数情况,不显示前面的加号

public class Complex{// 1. Z = a(实部) + bi(虚部);

private int RealPart; // 实部
private int ImaginPart; // 虚部

public int getRealPart() {
return RealPart;
}

public void setRealPart(int r) {
RealPart = r;
}

public int getImaginPart() {
return ImaginPart;
}

public void setImaginPart(int i) {
ImaginPart = i;
}
// 构造函数
public Complex() {}
public Complex(int r, int i) {
super();
RealPart = r;
ImaginPart = i;
}

// 相加
public static String add(Complex a,Complex b){
Complex temp = new Complex();
temp.setRealPart(a.getRealPart()+b.getRealPart());
temp.setImaginPart(a.getImaginPart()+b.getImaginPart());
return show(temp);
}

// 相减
public static String minus(Complex a,Complex b){
Complex temp = new Complex();
temp.setRealPart(a.getRealPart()-b.getRealPart());
temp.setImaginPart(a.getImaginPart()-b.getImaginPart());
return show(temp);
}

//相乘
//A*B=ac-bd+(ad+bc)i
//A=a+bi, B=c+di
public static String Multi(Complex a,Complex b){
Complex temp = new Complex();
temp.setRealPart((a.getRealPart()*b.getRealPart())-(a.getImaginPart()*b.getImaginPart()));
temp.setImaginPart((b.getImaginPart()*a.getRealPart())+(b.getRealPart()*a.getImaginPart()));
return show(temp);
}

// 显示输出
public static String show(Complex a){
StringBuffer sb = new StringBuffer();
sb.append(a.getRealPart());
if(a.getImaginPart()>0){
sb.append("+"+a.getImaginPart()+"i");
}else if(a.getImaginPart()<0){
sb.append(a.getImaginPart()+"i");
}
return sb.toString();
}

}

2.实验报告中统计自己的psp时间

步骤 耗时 百分比
需求分析  20分钟  11.7%
设计  10分钟左右  5.8%
代码实现  1小时30分钟左右  52.9%
测试  30分钟  17.64%
分析总结 20分钟左右 11.7%
              
   

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

4.总结单元测试的好处

防止程序出现死角,有利于程序员们整理思路,找到问题所在

更容易在早期发现问题所在,问题不容易堆积,可以马上解决

遇到的问题:

1实验楼虚拟机的反应还是不太好,所以大部分都是在自己的电脑做完的。

2.把Animal和dog和cat class 放在一起后没有编译成功,后分别给他们放在不同的class中编译通过。

3在做字符对照测试的时候,不注意输入会容易出错。

4.Complex中一开始把显示定义为void类型,在测试时并不方便,后改为String类型后就可行了。

20135214万子惠 (2)——-Java面向对象程序设计的更多相关文章

  1. 2018-2019-2 实验二 Java面向对象程序设计

    实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验要求 1.没有Linux基础的同学 ...

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

    20175315 实验二<Java面向对象程序设计>实验报告 一.实验内容及步骤 1.初步掌握单元测试和TDD 单元测试 任务一:三种代码 用程序解决问题时,要学会写以下三种代码: 伪代码 ...

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

    20165235 Java面向对象程序设计 姓名:祁瑛 学号:20165235 班级:1652 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2018.4.14 指导老师: ...

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

    20165236 实验二<Java面向对象程序设计>实验报告 姓名:郭金涛       学号:20165236      课程:Java程序设计 指导老师:娄嘉鹏       实验时间:2 ...

  5. 2017-2018-2 20165215 实验二 Java面向对象程序设计

    20165215 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...

  6. 2017-2018-2 20165327 实验二 《Java面向对象程序设计》实验报告

    20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...

  7. 2017-2018-2 20165315 实验二《Java面向对象程序设计》实验报告

    2017-2018-2 20165315 实验二<Java面向对象程序设计>实验报告 一.实验内容及步骤 1.初步掌握单元测试和TDD 单元测试 任务一:三种代码 用程序解决问题时,要学会 ...

  8. 2017-2018-2 20165318 实验三《Java面向对象程序设计》实验报告

    2017-2018-2 20165318 实验三<Java面向对象程序设计>实验报告 一.实验报告封面 课程:Java程序设计        班级:1653班        姓名:孙晓暄  ...

  9. 2017-2018-2 20165318 实验二《Java面向对象程序设计》实验报告

    2017-2018-2 20165318 实验二<Java面向对象程序设计>实验报告 一.实验报告封面 课程:Java程序设计        班级:1653班        姓名:孙晓暄  ...

随机推荐

  1. android:launchMode的四种方式

    Activity一共有以下四种launchMode: standard singleTop singleTask singleInstance 1.standard standard模式是默认的启动模 ...

  2. MASM6.15汇编程序例子

    /***************通过调用(INT 21H)表中的01h号功能号从键盘输入一个字符并回显到视频显示器上*****************/ DATAS SEGMENT ;此处输入数据段代 ...

  3. matalab(绘图)

    plot(x) % 绘图语句F = getframe(gcf); %抓取图片imwrite(F.cdata,'myfile.jpg'); %保存图片 然后就可以在默认路径也就是matlab工作目录中找 ...

  4. 自定义Encoder/Decoder进行对象传递

    转载:http://blog.csdn.net/top_code/article/details/50901623 在上一篇文章中,我们使用Netty4本身自带的ObjectDecoder,Objec ...

  5. 转:Nginx配置指令location匹配符优先级和安全问题

    转:http://www.jb51.net/article/47761.htm 使用nginx 很久了,它的性能高,稳定性表现也很好,得到了很多人的认可.特别是它的配置,有点像写程序一样,每行命令结尾 ...

  6. Oracle “dba_tables”介绍

    DBA_TABLES describes all relational tables in the database. Its columns are the same as those in ALL ...

  7. Jsp页面中使用fckeditor控件的两种方法 [转]

    fckeditor控件请到官方网站下载http://www.fckeditor.net,本例主要用到FCKeditor_2.6.3.zip.fckeditor-java-demo-2.4.1.zip. ...

  8. 创建论坛Discuz

    下载discuz! mkdir /data/wwwcd /data/wwwwget  http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GB ...

  9. c++ 普通高精除高精

    //codevs3118 高精度练习之除法 //打出了高精除高精,内心有点小激动. //还记得已开始学的时候非常难打 #include<cstdio>#include<cstring ...

  10. Echarts 地图控件tooltip多行显示

    直接上代码 var o = { "tooltip": { trigger: 'item', "formatter": function (params) { v ...