zoukankan      html  css  js  c++  java
  • 有理数类设计

    一.

    有理数类代码

    package java;
    
    public class RationalNumber {
    	private int numerator;//分子
        private int denominator;//分母
    	public RationalNumber(int numerator,int denominator) {   //构造函数
    		this.numerator=numerator;
    		this.denominator=denominator;
    	}
    	public int getNumerator(){     //获取分子
    		return this.numerator;
    	}
    	public int getDenominator(){   //获取分母
    		return this.denominator;
    	}
    	public RationalNumber add(RationalNumber first,RationalNumber second) {               //加
    		int num=first.numerator*second.denominator+second.numerator*first.denominator;
    		int den=first.denominator*second.denominator;
    		return new RationalNumber(num,den);
    	
    	}
    	public RationalNumber sub(RationalNumber first,RationalNumber second) {               //减
    		int num=first.numerator*second.denominator-second.numerator*first.denominator;
    		int den=first.denominator*second.denominator;
    		return new RationalNumber(num,den);
    	
    	}
    	public RationalNumber mul(RationalNumber first,RationalNumber second) {               //乘
    		int num=first.numerator*second.numerator;
    		int den=first.denominator*second.denominator;
    		return new RationalNumber(num,den);
    	
    	}
    	public RationalNumber div(RationalNumber first,RationalNumber second) {               //除
    		int num=first.numerator*second.denominator;
    		int den=first.denominator*second.numerator;
    		return new RationalNumber(num,den);
    	
    	}
    	public boolean equal(RationalNumber first,RationalNumber second) {                    //判断是否相等
    		if((first.numerator==second.numerator)&&(first.denominator==second.denominator)) {
    			return true;
    			}
    		else {
    			return false;
    		}
    		}
    	public int intValue() {                //转换为int型
    		return this.numerator/this.denominator;
    	}
    	public double doubleValue() {         //转换为double型
    		return 1.0*this.numerator/this.denominator;
    	}
    	public float floatValue() {           //转换为float型
    		return (float)doubleValue();
    	}
    	public long longValue() {             //转换为long型
    		return (long)doubleValue();
    	}
    	public String toString() {
    		if(this.denominator==1) {
    			return this.numerator+" ";
    		}
    		else {
    			return this.numerator+"/"+this.denominator;   //转换为字符串类型
    		}
    	}
    }
    
    

    二.

    测试代码

    import java.RationalNumber;
    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		while(sc.hasNext()) {
    			int a=sc.nextInt(),b=sc.nextInt(),c=sc.nextInt(),d=sc.nextInt();
    			RationalNumber S1=new RationalNumber(a,b);
    			RationalNumber S2=new RationalNumber(c,d);
    			RationalNumber S;
    			S=S1.add(S1, S2);
    			System.out.println("加法得到的有理数值为:"+S);
    			S=S1.sub(S1, S2);
    			System.out.println("减法得到的有理数值为:"+S);
    			S=S1.mul(S1, S2);
    			System.out.println("乘法得到的有理数值为:"+S);
    			S=S1.div(S1, S2);
    			System.out.println("除法得到的有理数值为:"+S);
    		}
    	}
    	}
    

    三.

    讨论

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

    c语言是面向过程的,还可以有独立于类的函数和全局变量存在,而面向对象有三大特征:封装性、继承性、多态性。面向对象的所有代码的基本单位都是类,所有函数和变量都必须存在于类中。

    2.别人如何复用你的代码?

    导入自己编写的有理数类

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

    会依赖,不影响。

    4.有理数类的public方法是否设置合适?为什么有的方法设置为private?

    合适,private仅限于自己访问,经过它定义的变量只能在此对象内部调用,外部程序就无法调用,也就是说只能供其自身调用,保证了数据的安全性。

  • 相关阅读:
    51nod 1117 聪明的木匠:哈夫曼树
    51nod 1010 只包含因子2 3 5的数
    51nod 2636 卡车加油
    51nod 2989 组合数
    51nod 2652 阶乘0的数量 V2
    51nod 1103 N的倍数
    51nod 2489 小b和灯泡
    51nod 1003 阶乘后面0的数量
    51nod 2122 分解质因数
    javascript中的setter和getter
  • 原文地址:https://www.cnblogs.com/123123-/p/13766484.html
Copyright © 2011-2022 走看看