BigDecimal类以面向对象的方式设计有理数类

仿照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());
}
}

运行展示

回答

  1. 尝试回答与c语言的有理数代码相比较,为什么你设计的类更加面向对象?

    C语言完全面向过程,我的类封装性较好

  2. 尝试从代码复用的角度来描述你设计的有理数类。从几个方面讨论。
    别人如何复用你的代码?
    在新类中创建BigDecimal类的对象,来调用已有类中的非private的属性和方法

  3. 别人的代码是否依赖你的有理数类的内部属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?
    他人的代码会依赖有理数类的属性,当我对有理数的属性修改时,也会影响到他人调用有理数类的代码

  4. 有理数类的public方法是否设置合适?为什么有的方法设置为private?
    需要根据需要来进行方法的访问级别,有一些方法需要设置为private,这样的话,这一方法就只能在这一类中使用,对于别的类来说相当于是隐藏不可见的,可以保护该方法中的赋值不被外界干扰,保护了子类

posted @ 2021-09-27 19:59  Li-xinguo★  阅读(65)  评论(0编辑  收藏  举报