有理数类的设计
一、有理数类的代码**
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可以保护一些代码不会被更改。