有理数类的设计
有理数类的设计
一、有理数类的代码
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?
合适,对数据进行保护。