1. 程式人生 > 遊戲 >《帝國時代4》DLC將為不同口味玩家 提供多樣化內容

《帝國時代4》DLC將為不同口味玩家 提供多樣化內容

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

package test1;

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.給出你的測試程式碼。要在與有理數類不同包的其他類中呼叫有理數類。

package test1;

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Arrays;
import java.util.List;
import java.math.BigDecimal;
import test1.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.嘗試從程式碼複用的角度來描述你設計的有理數類。從幾個方面討論。

4.1別人如何複用你的程式碼 ?

匯入test1包

4.2別人的程式碼是否依賴你的有理數類的屬性?當你的有理數類的屬性修改時,是否會影響他人呼叫你有理數類的程式碼?

是的,有理數屬性更改在一定程度上會影響呼叫我有理數的除了public類的程式碼。

4.3有理數類的public方法是否設定合適?為什麼有的方法設定為private?

有些屬性不想被他人訪問可以設定為private類