3.1-互评-OO设计-有理数类的设计

一:给出你的有理数类的代码。

package com.Hellow.java;

public class RationalNum {
    private int mole;   //分子
    private int denom;  //分母

    public RationalNum(int m,int d){
        this.mole =m;
        this.denom =d;  //函数构造
    }

    public int getMole() {
        return this.mole; //获得分子
    }

    public int getDenom() {
        return this.denom;  //获得分母
    }

    public RationalNum add(RationalNum RationalNum2) {
        int n= mole *RationalNum2.getDenom()+ mole *RationalNum2.getMole();
        int d= denom *RationalNum2.getMole();
        return new RationalNum(n,d);  //加法
    }
    public RationalNum Subtraction(RationalNum RationalNum2) {
        int n= mole *RationalNum2.getDenom()- mole *RationalNum2.getMole();
        int d= denom *RationalNum2.getMole();
        return new RationalNum(n,d); //减法
    }
    public RationalNum muiltiply(RationalNum RationalNum2) {
        int n= mole *RationalNum2.getMole();
        int d= denom *RationalNum2.getDenom();
        return new RationalNum(n,d); //乘法
    }
    public RationalNum division(RationalNum RationalNum2) {
        int n= mole *RationalNum2.denom;
        int d= denom *RationalNum2.mole;
        return new RationalNum(n,d); //除法
    }
    public String toString(){
        if(denom ==1){
            return mole +"";
        }else{
            return mole +"/"+ denom;
        } //转化为字符串
    }
    public double doubleValue(){
        return mole*1.0/denom;
    }  //转化为double型
    public int intValue(){
        return(int)doubleValue();
    } //转化为int型
    public float floatValue(){
        return(float)doubleValue();
    } //转化为float型

}

二:给出你的测试代码。要在与有理数类不同包的其他类中调用有理数类。

1:测试代码

package com.Hellow.java;
public class Main {

    public static void main(String[] args) {
        RationalNum x = new RationalNum(3, 7);
        RationalNum y = new RationalNum(8, 7);
        System.out.println("x = " + x);
        System.out.println("y = " + y);
        System.out.println("x + y = " + x.add(y));
        System.out.println("x - y = " + x.Subtraction(y));
        System.out.println("x * y = " + x.muiltiply(y));
        System.out.println("x / y = " + x.division(y));
        System.out.println("x的int    型 " + x.intValue());
        System.out.println("x的float  型 " + x.floatValue());
        System.out.println("x的double 型 " + x.doubleValue());
        System.out.println("y的int    型 " + y.intValue());
        System.out.println("y的float  型 " + y.floatValue());
        System.out.println("y的double 型 " + y.doubleValue());
    }
}

2:测试结果

三:类名、变量名命名需符合Java规范

本次作业的所有类名,变量名命名均符合规范,均采用驼峰命名法。

四:尝试描述怎么与c语言的有理数代码相比较,为什么你设计的类更加面向对象?

C语言是面向过程的语言,设计有理数代码时,需要用大量的代码去描述其过程,有时候会很复杂。而用JAVA设计的类相比较,因为JAVA类中有相关的属性于方法,定义了相关的属性,用方法调用就行了。相对简单

五:尝试从代码复用的角度来描述你设计的有理数类。从几个方面讨论。

a:别人如何复用你的代码?

通过导入我有理数中的类,因为类中有相关的属性和方法。

b:别人的代码是否依赖你的有理数类的属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?

别人的代码依赖我有理数的属性,不会影响他人调用我的有理数代码。

c:有理数类的public方法是否设置合适?为什么有的方法设置为private?

合适,因为这样设置可以使代码复用,有的方法设置为public,因为可以让别人更好的调用我的类,不会出现无法调用的情况。
有的设置为private,因为有的属性不能被别的类访问,提高数据的安全性。

posted @ 2020-10-04 02:58  JYangYang  阅读(164)  评论(0编辑  收藏  举报