• 20155230 实验二《Java面向对象程序设计》实验报告


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

    一、单元测试

    三种代码

    • 知道了伪代码、产品代码、测试代码的关系和用途,并根据老师的例子,按测试代码调试了产品代码。

    • 值得注意的是,测试用例要全面选择,特别是异常用例和边界用例。

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

    • 安装了Java单元测试工具JUnit进行TDD。体会了TDD编码节奏。并且最终测试结果出现了绿条。

    二、面向对象三要素

    抽象、封装、继承和多态

    • 学会了使用StarUML进行建模,针对最后练习里设计复数类进行OOD设计。老师已经给出了Complex类的整体框架。我在StarUML中画出了Complex类的模型图。

    三、设计模式初步

    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,依赖倒置原则)

    模式与设计模式

    知道了模式的重要作用和设计模式在Java中的重要地位。

    设计模式示例

    根据老师给出的例子体会了OCP原则和DIP原则,初步理解了设计模式,并实例程序扩充,使其支持了short类。

    四、练习

    使用TDD方式设计实现复数类Complex

    Complex类完整代码:

    public class Complex {
        // 定义属性并生成getter,setter
        private double RealPart;
        private double ImagePart;
    
        public void setterRealPart(double realPart) {
            this.RealPart = realPart;
        }
        public void setterImagePart(double imagePart){
            this.ImagePart = imagePart;
        }
        public double getterRealPart(){
            return RealPart;
        }
        public double getterImagePart(){
            return ImagePart;
        }
    
        // 定义构造函数
        public Complex(){}
        public Complex(double R,double I){
            this.RealPart = R;
            this.ImagePart = I;
        }
    
        //Override Object
        public boolean equals(Object obj){
            if(this == obj){
                return true;
            }
            if(!(obj instanceof Complex)){
                return false;
            }
            Complex complex = (Complex) obj;
            if(getterRealPart()!=complex.getterRealPart()){
                return false;
            }
            if(getterImagePart()!=(complex.getterImagePart())){
                return false;
            }
            return true;
        }
        public String toString(){
            String s = new String(Double.toString(getterRealPart()));
            //  s.concat(Double.toString(getterRealPart()));
            if(getterImagePart()>0)
            s = s + '+';
            s = s + Double.toString(getterImagePart());
           // s.concat(Double.toString(getterImagePart()));
            s = s + 'i';
            return s;
        }
    
        // 定义公有方法:加减乘除
        Complex ComplexAdd(Complex a){
            Complex b = new Complex();
            b.ImagePart = this.ImagePart + a.ImagePart;
            b.RealPart = this.RealPart + a.RealPart;
            return b;
        }
        Complex ComplexSub(Complex a){
            Complex b = new Complex();
            b.ImagePart = this.ImagePart - a.ImagePart;
            b.RealPart = this.RealPart - a.RealPart;
            return b;
        }
        Complex ComplexMulti(Complex a){
            Complex b = new Complex();
            b.RealPart = this.RealPart * a.RealPart - this.ImagePart * a.ImagePart;
            b.ImagePart = this.RealPart * a.ImagePart + this.ImagePart * a.RealPart;
            return b;
        }
        Complex  ComplexDiv(Complex a) {
            Complex b = new Complex();
            b.RealPart = (this.RealPart * a.RealPart + this.ImagePart * a.ImagePart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart);
            b.ImagePart = (this.ImagePart * a.RealPart - this.RealPart * a.ImagePart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart);
            return b;
        }
    }
    

    最终每个方法都测试通过了。

    单元测试的好处:

    单元测试将复杂的问题分解了。只要我们能保证每一块积木是正确可用的,那我们砌出来的墙,建起来的楼必然也是牢靠的。

  • 相关阅读:
    CSS3 3D Transform
    js关闭当前页面(窗口)的几种方式总结
    JavaScript书籍阅读
    使用@media screen解决移动web开发的多分辨率问题
    ie678 兼容问题
    JS动态引入js,CSS——动态创建script/link/style标签
    扁平化设计的流行配色方案
    最简单的jquery轮播图
    ie7 z-index 失效问题
    js正则表达式手机号(邮箱)验证
  • 原文地址:https://www.cnblogs.com/J1n233/p/6930825.html
Copyright © 2020-2023  润新知