有理数类的设计

有理数类的设计

一、有理数类的代码

public class RationalNumber {
	int numerator;//分子
	int denominator;//分母
	public RationalNumber(int numerator,int denominator){//对有理数进行有参初始化
		this.numerator=numerator;
		this.denominator=denominator;
	}
	public RationalNumber plus(RationalNumber a,RationalNumber b){//有理数相加
		a.denominator=a.denominator*b.denominator;
		a.numerator= a.numerator*b.denominator;
		b.numerator= b.numerator*a.denominator;
		RationalNumber c;
		c.numerator=a.numerator+b.numerator;
		c.denominator=a.denominator;
		return c;
	}
	public RationalNumber plus(RationalNumber a,RationalNumber b){//有理数相减
		a.denominator=a.denominator*b.denominator;
		a.numerator= a.numerator*b.denominator;
		b.numerator= b.numerator*a.denominator;
		RationalNumber c;
		c.numerator=a.numerator-b.numerator;
		c.denominator=a.denominator;
		return c;
	}
}

二、测试代码

public class Test {
	public static void main(String[] args){
		Scanner sc= new Scanner(System.in);
		System.out.println("请依次输入分子、分母);
		int a = sc.nextInt(),b = sc.nextInt();
		int c = sc.nextInt(),d = sc.nextInt();
		RationalNumber num1 =new RationalNumber(a,b);
		RationalNumber num2 = new RationalNumber(c,d);
		System.out.println("相加得");
		System.out.println(num1.plus(num1,num2));
		System.out.println("相减得");
		System.out.println(num1.subtract(num1,num2));
	}
}

三、与C语言的有理数代码比较

​ Java中设计的类更面向对象的原因是类提供了一种模板,可以根据相应的要求更简洁方便的创造更改对象。

四、讨论

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

复制代码;

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

不依赖,不会;

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

合适,对数据进行保护。

posted @ 2020-10-04 08:54  偎己  阅读(144)  评论(0编辑  收藏  举报