有理数类的设计
一、代码
1、有理数类的代码
package rational;
public class Rational {
private long numerator;//分子
private long denominator;//分母
public Rational (long numerator,long denominator)//构造函数
{
this.numerator = numerator;
this.denominator = denominator;
}
public long getNumerator() {//获得分子
return numerator;
}
public long getDenominator() {//获得分母
return denominator;
}
public Rational add(Rational r2){//加法
long n=this.numerator*r2.denominator+this.denominator*r2.numerator;
long d=this.denominator*r2.denominator;
return new Rational(n,d);
}
public Rational subtract(Rational r2){//减法
long n=this.numerator*r2.denominator-this.denominator*r2.numerator;
long d=this.denominator*r2.denominator;
return new Rational(n,d);
}
public Rational multiply(Rational r2){//乘法
long n=this.numerator*r2.numerator;
long d=this.denominator*r2.denominator;
return new Rational(n,d);
}
public Rational divide(Rational r2){//除法
long n=this.numerator*r2.denominator;
long d=this.denominator*r2.numerator;
return new Rational(n,d);
}
public int compare(Rational r2) {//比较大小
long n=this.numerator*r2.denominator-this.denominator*r2.numerator;
if(n>0)System.out.println("r1>r2");
else if(n<0)System.out.println("r1<r2");
else System.out.println("r1==r2");
return 0;
}
}
2、测试代码
package pta;
import rational.Rational;
public class test3 {
public static void main(String[] args) {
Rational r1=new Rational(3,4);
Rational r2=new Rational(1,5);
System.out.println(r1.add(r2).getNumerator()+"/"+r1.add(r2).getDenominator());
System.out.println(r1.subtract(r2).getNumerator()+"/"+r1.subtract(r2).getDenominator());
System.out.println(r1.multiply(r2).getNumerator()+"/"+r1.multiply(r2).getDenominator());
System.out.println(r1.divide(r2).getNumerator()+"/"+r1.divide(r2).getDenominator());
r1.compare(r2);
}
}
测试结果截图:
二、讨论
1、尝试描述怎么与c语言的有理数代码相比较,为什么你设计的类更加面向对象?
因为C语言是面向过程编程,重点在于用函数,而我设计的类根据本身特性设计功能
2、尝试从代码复用的角度来描述你设计的有理数类
a、别人如何复用你的代码?
可以通过导入我的有理数类的包
b、别人的代码是否依赖你的有理数类的属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?
别人的代码依赖于我的有理数类的属性;
当我的有理数类的属性修改时,不会影响他人调用你有理数类的代码,因为我的有理数类的属性是private型
c、有理数类的public方法是否设置合适?为什么有的方法设置为private?
合适;设置为private可以保护类的数据,有些方法只是起辅助作用,不需要在其他类中使用