仿照BigDecimal类以面向对象的方式设计有理数类
完整代码
-
给出你的完整的有理数类的代码:
package javan; public class BigDecimal { private double Number1;//定义有力数为私有 private double Number2;//定义有力数为私有 public double getNumber1() { return Number1; } public void setNumber1(double Number1) { this.Number1 = Number1; } public double getNumber2() { return Number2; } public void setNumber2(double Number2) { this.Number2 = Number2; } //BigDecimal用法:加减乘除求余数,转换对象数值为float,double,long,int,格式化,比较 //加法 public void add() { double Number = Number1 + Number2; System.out.println(Number); } //减法 public void sub() { double Numbers = Number1 - Number2; System.out.println(Numbers); } //乘法 public void mul() { double Numberr = Number1 * Number2; System.out.println(Numberr); } //除法 public void div() { double Number = Number1 / Number2; System.out.println(Number); } //求余 public void rem() { double Numberd = Number1%Number2; System.out.println(Numberd); } public int intValue()//转换为int型 { return (int)this.Number1; } public long longValue() //转换为long型 { return (long)this.Number1; } public float floatValue() //转换为float型 { return (float)this.Number1; } public String toString() //转换为string型 { return this.Number1 + "/" + this.Number1; } //比较 public boolean equal() //判断是否相等 { if ((this.Number1 == this.Number2)) { return true; } else { return false; } } }
测试代码
给出你的测试代码。要在与有理数类不同包的其他类中调用有理数类。
类名、变量名命名需符合Java规范
package javan;
import java.util.Scanner;
public class Main10 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
BigDecimal NUMber=new BigDecimal();
double number1=in.nextDouble();
double number2=in.nextDouble();
NUMber.setNumber1(number1);
NUMber.setNumber2(number2);
System.out.println("输入:"+NUMber.getNumber1());
System.out.println("输入:"+NUMber.getNumber2());
NUMber.add();
NUMber.sub();
NUMber.mul();
NUMber.div();
NUMber.rem();
int i=NUMber.intValue();//转换为int
float j=NUMber.floatValue();//转换为float
long k=NUMber.longValue();//转换为long
System.out.println(i);
System.out.println(j);
System.out.println(k);
System.out.println(NUMber.equal());
System.out.println(NUMber.toString());
}
}
运行展示
回答
-
尝试回答与c语言的有理数代码相比较,为什么你设计的类更加面向对象?
C语言完全面向过程,我的类封装性较好
-
尝试从代码复用的角度来描述你设计的有理数类。从几个方面讨论。
别人如何复用你的代码?
在新类中创建BigDecimal类的对象,来调用已有类中的非private的属性和方法 -
别人的代码是否依赖你的有理数类的内部属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?
他人的代码会依赖有理数类的属性,当我对有理数的属性修改时,也会影响到他人调用有理数类的代码 -
有理数类的public方法是否设置合适?为什么有的方法设置为private?
需要根据需要来进行方法的访问级别,有一些方法需要设置为private,这样的话,这一方法就只能在这一类中使用,对于别的类来说相当于是隐藏不可见的,可以保护该方法中的赋值不被外界干扰,保护了子类