20145304 实验二实验报告

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

实验内容

  • 1.初步掌握单元测试和TDD;
  • 2.理解并掌握面向对象三要素:封装、继承、多态;
  • 3.初步掌握UML建模;
  • 4.熟悉S.O.L.I.D原则;
  • 5.了解设计模式。

实验步骤

单元测试

  • 1.三种代码:
  • 伪代码:
百分制转五分制:
   如果成绩小于60,转成“不及格”
   如果成绩在60与70之间,转成“及格”
   如果成绩在70与80之间,转成“中等”
   如果成绩在80与90之间,转成“良好”
   如果成绩在90与100之间,转成“优秀”
   其他,转成“错误”
  • 产品代码:

  • 测试代码:

TDD

  • 1.新建一个测试目录:

  • 2.增加第一个测试用例:

  • 3.修改代码,出现绿条,测试完成:

UML

  • 1.新建一个class:

  • 2.右键Dog类,选择Add,再点击Attribute,填好内容;

  • 3.右键Dog类,选择Add,再点击Operation,填好内容;

  • 4.按上面的步骤再添加一个Cat类:

设计模式初步:

  • 面向对象三要素是“封装、继承、多态”,任何面向对象编程语言都会在语法上支持这三要素。如何借助抽象思维用好三要素特别是多态还是非常困难的,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,依赖倒置原则)

练习

伪代码

输入两个复数a,b
实现a,b相加并输出
实现a,b相减并输出
实现a,b相乘并输出

产品代码

package cc.openhome;
import java.util.Scanner;
public class Complex {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.printf("请输入a的实部和虚部");//输入两个复数
        double ra=scanner.nextDouble();
        double ia=scanner.nextDouble();
        System.out.printf("请输入b的实部和虚部");
        double rb=scanner.nextDouble();
        double ib=scanner.nextDouble();
        double addR,addI,minusR,minusI,MultiR,MultiI;
        System.out.printf("a+b=%.2f+%.2fi%n",ra+rb,ia+ib);
        System.out.printf("a-b=(%.2f)+(%.2fi)%n",ra-rb,ia-ib);
        System.out.printf("a*b=%.2f+%.2fi%n",(ra*rb)-(ia*ib),(rb*ia)+(ra*ib));

    }

测试结果

PSP

步骤 耗时 百分比
需求分析 10分钟 9%
设计 20分钟 18%
代码实现 30分钟 27%
测试 20分钟 28%
分析总结 30分钟 27%

单元测试的好处

  • 可以根据需求设计相应的代码,不浪费精力在不你要的代码上;
  • 设计代码时考虑问题更加全面,不容易漏掉重要的环节;
  • 运用了换位思考的方式来设计实现代码,用户满意度比较高。

问题及解决过程

有尝试使用调用函数的方法来实现练习,但编译过程中出现错误未能解决,已至无法进行下去,所以换用较为简单的做法。我会在今后的学习中努力解决这个问题。

posted @ 2016-04-14 22:00  20145304刘钦令  阅读(167)  评论(1编辑  收藏  举报