• 20135214万子惠 (2)——-Java面向对象程序设计


    实验内容

    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类型后就可行了。

  • 相关阅读:
    jquery点击事件后增加克隆的标签,并改变克隆的属性加入
    jQuery 文本插入和标签移动方法
    用jquery来实现正反选选择框checkbox的小示例
    js 常用事件句柄总结
    jQuery 菜单小练习(实现点击和移动鼠标效果)
    jQuery 选择器
    js 中移动元素的方法
    《JavaScript总结》深拷贝和浅拷贝
    《JavaScript总结》js的运行机制
    git 撤回放到暂存区的文件
  • 原文地址:https://www.cnblogs.com/midori/p/4480796.html
Copyright © 2020-2023  润新知