1. 程式人生 > 資訊 >外媒:紫光集團執行副總裁高啟全五年合約期滿,已經離職

外媒:紫光集團執行副總裁高啟全五年合約期滿,已經離職

仿照BigDecimal類以面向物件的方式設計有理數類。

  1. 給出你的有理數類的程式碼。

    package rational;
    
    public class Rational {
        
        private int Numerator;//分子
        private int Denominator;//分母
        
        public Rational(int Numerator, int Denominator) {    //建構函式
            this.Numerator=Numerator;
            this.Denominator=Denominator;
        }
    
        
    public int getNumerator() { //獲取分子 return Numerator; } public void setNumerator(int numerator) { Numerator = numerator; } public int getDenominator() { //獲取分母 return Denominator; } public void setDenominator(int denominator) { Denominator
    = denominator; } public Rational addition(Rational X) { //加法 int a=this.Numerator*X.Denominator+X.Numerator*this.Denominator; int b=this.Denominator*X.Denominator; return new Rational(a,b); } public Rational subtraction(Rational X) { //減法 int
    a=this.Numerator*X.Denominator-X.Numerator*this.Denominator; int b=this.Denominator*X.Denominator; return new Rational(a,b); } public Rational multiplication(Rational X) { //乘法 int a=this.Numerator*X.Numerator; int b=this.Denominator*X.Denominator; return new Rational(a,b); } public Rational division(Rational X) { //除法 int a=this.Numerator*X.Denominator; int b=this.Denominator*X.Numerator; return new Rational(a,b); } public int compareTo(Rational X) { //比較大小 if(this.subtraction(X).getNumerator()>0) return 1;//大於 else if(this.subtraction( X).getNumerator()==0) return 0;//等於 else return -1;//小於 } public String toString() { //轉換成String型,輸出Rational類預設轉換為該型 if(this.Denominator==1) return this.Numerator+" "; else return this.Numerator+"/"+this.Denominator; } public double doubleValue() { //轉換成double型 return 1.0*this.Numerator/this.Denominator; } public int intValue() { //轉換成int型 return (int)doubleValue(); } public long longValue() { //轉換成long型 return (long)doubleValue(); } }

  2. 給出你的測試程式碼。要在與有理數類不同包的其他類中呼叫有理數類。

    import java.util.Scanner;
    
    import rational.Rational;
    
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.println("輸入兩個數字構成有理數分數");
            Rational a = new Rational(in.nextInt(), in.nextInt());
            System.out.println("輸入兩個數字構成有理數分數");
            Rational b = new Rational(in.nextInt(), in.nextInt());
            System.out.println("兩個有理數相加結果");
            System.out.println(a.addition(b));
            System.out.println("兩個有理數相減結果");
            System.out.println(a.subtraction(b));
            System.out.println("兩個有理數相乘結果");
            System.out.println(a.multiplication(b));
            System.out.println("兩個有理數相除結果");
            System.out.println(a.division(b));
            System.out.println("比較兩個有理數大小結果:大於輸出1,等於輸出0,小於輸出-1");
            System.out.println(a.compareTo(b));
            System.out.println("將第一個有理數轉換成字串型");
            System.out.println(a.toString());
            System.out.println("將第一個有理數轉換成double型");
            System.out.println(a.doubleValue());
            System.out.println("將第一個有理數轉換成int型");
            System.out.println(a.intValue());
            System.out.println("將第一個有理數轉換成long型");
            System.out.println(a.longValue());
        }
    
    }

  3. 嘗試描述怎麼與c語言的有理數程式碼相比較,為什麼你設計的類更加面向物件?c語言程式碼是依據於函式的,主要是通過過程來實現,類將功能以方法形式寫出,而在使用時將類匯入即可,更加方便

  4. 嘗試從程式碼複用的角度來描述你設計的有理數類。從幾個方面討論。

    1. 別人如何複用你的程式碼 ? 匯入rational包

    2. 別人的程式碼是否依賴你的有理數類的屬性?當你的有理數類的屬性修改時,是否會影響他人呼叫你有理數類的程式碼?是的,有理數屬性更改在一定程度上會影響呼叫我有理數的除了public類的程式碼。

    3. 有理數類的public方法是否設定合適?為什麼有的方法設定為private? 有些屬性不想被他人訪問可以設定為private類