有理数类的设计

一、有理数类的代码**

package work1;

public class Rationalnumber {
	private int  Molecular;   //分子
	private int  Denominator;    //分母
	
	public Rationalnumber (int x, int y) {
		this.Molecular = x;
		this.Denominator = y;
	}
	
	public int GetMolecular () {
		return this.Molecular;    //取分子
	}
	
	public int GetDenominator () {
		return this.Denominator;        //取分母
	}
	
	public Rationalnumber Add (Rationalnumber num2) {
		int m =  Molecular*num2.GetDenominator() + Denominator*num2.GetMolecular();
		int d =  Denominator*num2.GetDenominator();
		return new Rationalnumber(m,d);                        //加
	}
	
	public Rationalnumber Sub (Rationalnumber num2) {
		int m =  Molecular*num2.GetDenominator() - Denominator*num2.GetMolecular();
		int d =  Denominator*num2.GetDenominator();
		return new Rationalnumber(m,d);                       //减
	}
	
	public Rationalnumber Mul (Rationalnumber num2) {
		int m = Molecular*num2.GetMolecular();
		int d = Denominator*num2.GetDenominator();
		return new Rationalnumber(m,d);                         //乘
	}
	
	public Rationalnumber Div (Rationalnumber num2) {
		int m = Molecular*num2.GetDenominator();
		int d = Denominator*num2.GetMolecular();
		return new Rationalnumber(m,d);                         //除
	}
	
	public String toString(){
        if(Denominator ==1){
            return Molecular +"";
        }
        else{
        	return Molecular +"/"+ Denominator;
        }                                                       //转化为字符串
    }
	
	public double doubleValue(){
        return Molecular*1.0/Denominator;                         //转化为double型
    	
    }
	public int intValue(){
        return(int)doubleValue();                               //转化为int型
    } 
}

二、测试代码

package main;

import work1.Rationalnumber;

public class Main {
	public static void main(String[] args) {
		Rationalnumber x = new Rationalnumber(1,4);
		Rationalnumber y = new Rationalnumber(7,3);
		System.out.println("x = " + x);
        System.out.println("y = " + y);
        System.out.println("x + y = " + x.Add(y));
        System.out.println("x - y = " + x.Sub(y));
        System.out.println("x * y = " + x.Mul(y));
        System.out.println("x / y = " + x.Div(y));
        System.out.println("x的整型     " + x.intValue());
        System.out.println("x的浮点型  " + x.doubleValue());
        System.out.println("y的整型     " + y.intValue());
        System.out.println("y的浮点型  " + y.doubleValue());
	}
}

测试结果截图

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

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

答:1,c语言中,每个函数是分开的,在类中,会将同种属性的函数放在一个类中,便于使用与维护。

​ 2,c语言实现有理数代码,在设计时,会去想设计怎样的代码去实现功能,可能面对的是单个问题,而设计的类,是想着有理数的特点与更多的功能,可以解决很多关于有理数的问题,更加面对对象。

五、尝试从代码复用的角度来描述你设计的有理数类。

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

答:可以直接导入我的有理数类的包,就可以直接使用了。

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

答:会依赖你的有理数类的属性,不会,因为我的有理数类的属性是private。

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

答:适合,因为public可以被任何类访问,设置为private可以保护一些代码不会被更改。

posted @ 2020-10-04 10:46  熊正雄  阅读(132)  评论(0编辑  收藏  举报