实验内容

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. struts2视频学习笔记 09-10(struts2处理流程,指定多个struts配置文件)

    课时9 Struts2的处理流程 StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它负责拦截由<url-pattern>/*</url- ...

  2. VS复习 -- if···else和if···else嵌套语句

    注意:理清逻辑,画出逻辑分支图,理清思路 1.if语句 2.if...else语句 3.if..else if...else static void Main(string[] args) { Con ...

  3. iBatisSQL中prepend的问题

    是前向声明还是后向声明? 官方文档那个给出:“the overridable SQL part that will be prepended to the statement”.可见是前向声明. -- ...

  4. struts2 拦截器 interceptor

    struts2 拦截器详解:http://struts2.group.iteye.com/group/wiki/1397-deep-into-struts2-interceptors

  5. Redis persistence demystified - part 1

    关于Redis我的一部分工作是阅读博客,论坛以及twitter时间线(time line).对于开发者来说,能够了解用户社区,非用户社区如果理解他正在开发的产品是非常重要的.据我所知,持久化特性是最易 ...

  6. eclipse常用10个快捷键[转载]

    转载自:http://www.jb51.net/softjc/139467.html

  7. 1968: [Ahoi2005]COMMON 约数研究

    #include<cstdio> #include<iostream> #define M 1000008 using namespace std; long long tot ...

  8. ROS主题发布订阅

    节点是一个可执行程序,它连接到了ROS的网络系统中.我们将会创建一个发布者,也就是说话者节点,它将会持续的广播一个信息. 改变目录到之前所建立的那个包下: cd ~/catkin_ws/src/beg ...

  9. u-boot 之配置分析 (2)

    Makefile简要分析所有这些目录的编译连接都是由顶层目录的makefile来确定的. 1.在makefile中有: unconfig: @rm -f $(obj)include/config.h ...

  10. [转载]查看基于Android 系统单个进程内存、CPU使用情况的几种方法

    转载自: http://www.linuxidc.com/Linux/2011-11/47587.htm 一.利用Android API函数查看1.1 ActivityManager查看可用内存. A ...