java实验报告(实验二)

              

    课程:移动平台应用开发实践   班级:201592     姓名:王鹤  学号:20159202

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

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

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

    实验名称:     Java开发环境的熟悉                                                      

    实验目的与要求:

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

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

      3. 初步掌握UML建模

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

 

      5. 了解设计模式

    实验设备:具有java开发环境的计算机

    实验内容、步骤

   (一)单元测试

    用程序解决问题时,要会写三种码:伪代码、产品代码、测试代码

    以实现一个百分制成绩转成“优、良、中、及格、不及格”五级制成绩的功能为例:

   1.伪代码

    若成绩小于60,转成“不及格”

    若成绩在60与70之间,转成“及格”

    若成绩在70与80之间,转成“中等”

    若成绩在80与90之间,转成“良好”

    若成绩在90与100之间,转成“优秀”

   其他,转成“错误”

   2.测试代码

   

   3.产品代码

   

   

   编译测试代码没有语法错误了,运行JUnit.Test,如下图:

   

   

    测试结果出现了一个红条,说明测试没通过,修改MyUtil.Java后再运行测试,如下图所示:

   

  测试成功!

  加入边界值测试

  

  发现测试未通过,再修改MyUtil.Java,加入对分数小于0和等于100的判断,运行程序,出现绿条说明测试成功,如下图所示:

  

(二)面向对象三要素

  面向对象(Object-Oriented)的三要素包括:封装、继承、多态。面向对象的思想涉及到软件开发的各个方面,如面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程实现(OOP)。

  Java中用类进行封装,建一个Dog类,Dog类通过使用类和访问控制(private,public)隐藏了属性color,开放了接口setColor(),getColor(),bark()toStringDog类是一个模块,测试代码与运行结果如下:

  

         OOD中建模会用图形化的建模语言UML(Unified Modeling Language),下面用UML中的类图来继承,UML类图能展示类之间的静态关系,在这个实例中AnimalTest类依赖Dog类和Cat类,如图所示:
    

上面的UML图把Dog类中的bark()Cat类中的meow()抽象成一个抽象方法shout(),Dog类和Cat类中覆盖这个方法,对应的测试代码和运行结果如下图所示:

     

  

(三)设计模式初步

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

面向对象三要素是“封装、继承、多态”,任何面向对象编程语言都会在语法上支持这三要素。如何借助抽象思维用好三要素特别是多态还是非常困难的,S.O.L.I.D类设计原则是一个很好的指导:

  • SRP(Single Responsibility Principle,单一职责原则)
  • OCP(Open-Closed Principle,开放-封闭原则)
  • LSP(Liskov Substitusion Principle,Liskov替换原则)
  • ISP(Interface Segregation Principle,接口分离原则)
  • DIP(Dependency Inversion Principle,依赖倒置原则)

(2)模式与设计模式

模式是某外在环境(Context) 下﹐对特定问题(Problem)的惯用解决之道。

在面向对象中设计模式的地位可以和面向过程编程中的数据结构的地位相当。

(四)练习

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

  一、伪代码:

    首先设计一个复数类Complex,定义三个构造方法:

  • 无输入 --- 则复数的实部为0,虚部为0
  • 输入一个参数--- 复数的实部为所输入的数,虚部为0
  • 输入两个参数 --- 复数的实部与虚部对应相应输入的两个数。
  • 加法 --- 复数的实部与实部相加,虚部与虚部相加 ,即输出a.x+b.x,a.y+b.y
  • 减法 --- 复数的实部与实部相减,虚部与虚部相减 , 即输出a.x-b.x,a.y-b.y
  • 乘法 --- 两个复数相乘,类似两个多项式相乘,展开得: ac+adi+bci+bdi^2
  • 除法 --- 在分子分母同时乘上分母的共轭.展开得:(ac+bd)/(c^2+d^2) +(bc-ad)/(c^2+d^2)i.

  二、测试代码:

    

   三、产品代码

   

    运行结果如下:

   

  

 实验PSP时间

步骤

耗时

百分比

需求分析

5min

5.6%

设计

20min

22.2%

代码实现

30min

33.4%

测试

5min

5.6%

分析总结

30min

33.4%

 实验总结与收获

   1.知道了TDD的一般步骤:明确当前要完成的功能,记录成一个测试列表,快速完成编写针对此功能的测试用例,测试代码编译不通过(没产品代码呢),编写产品代码,测试通过,对代码进行重构,并保证测试通过。

  2.写程序先写出三种代码:伪代码、产品代码、测试代码,这样的程序才有实际意义。

  遇到的问题及解决

  Complex伪代码时不知道应该如何分类。查询复数类的构造方法,得知可以定义三类,对复数的加减乘除方法有些遗忘,后查询相关资料得知。

原文地址:https://www.cnblogs.com/20159202wh/p/4870579.html