三星目標明年銷售200萬臺Mini-LED電視:4K解析度,四款機型
阿新 • • 發佈:2020-10-02
1、有理數類的設計
package number; public class Rational { public int num; public int denom; public Rational(int num, int denom) {// 對有理數物件進行初始化 this.num = num; this.denom = denom; if(num==0&&denom==-1) {//若分子為零則直接返回 this.num=0; this.denom=-1; return; } if (denom == 0) { System.err.println("分母不得為零"); return; } if (denom < 0) {// 將正負號設定到分子上 this.num = -num; this.denom = -denom; } if (denom != 1) {// 若分母不為1則將分數化簡 int a = Math.abs(num); int b = Math.abs(denom); int temp; if (a < b) { // 保證被除數大於除數 temp = a; a = b; b = temp; } if (a % b != 0) { while (a % b != 0) { // 在餘數不為0時,進行迴圈 temp = a % b; a = b; b = temp; } } this.num /= b; this.denom /= b; } } public void out() {// 輸出有理數物件 System.out.println("(" + this.num + "," + this.denom + ")"); } public Rational back() { return new Rational(0,1); } public Rational plus(Rational number) {// 加法運算 int num = this.num * number.denom + number.num * this.denom; int denom = this.denom * number.denom; if(num==0)back(); return new Rational(num, denom); } public Rational subtract(Rational number) {// 減法運算 int num = this.num * number.denom - number.num * this.denom; int denom = this.denom * number.denom; if(num==0)back(); return new Rational(num, denom); } public Rational multiply(Rational number) {// 乘法運算 int num = this.num * number.num; int denom = this.denom * number.denom; if(num==0)back(); return new Rational(num, denom); } public Rational divide(Rational number) {// 除法運算 int num = this.num * number.denom; int denom = this.denom * number.num; if(num==0)back(); return new Rational(num, denom); } }
2、測試程式碼:
package test; import number.Rational; public class Test { public static void main(String[] args) { // 建立有理數物件 Rational sc = new Rational(2, -8); Rational st = new Rational(-4, 8); sc.out(); st.out(); // 有理數的運算 Rational sv = sc.plus(st); sv.out(); sv = sc.subtract(st); sv.out(); sv = sc.multiply(st); sv.out(); sv = sc.divide(st); sv.out(); } }
4、嘗試描述怎麼與c語言的有理數程式碼相比較,為什麼你設計的類更加面向物件?
在函式的編寫、呼叫、類的例項化方面可以明顯看出java是通過物件這一概念來完成各種呼叫、生成和計算的。
5a、別人如何複用你的程式碼?
package包的匯入
5b、別人的程式碼是否依賴你的有理數類的屬性?當你的有理數類的屬性修改時,是否會影響他人呼叫你有理數類的程式碼?
依賴、有影響,包中類的屬性經確立後,使用該類的其他類就只能使用該類有且僅有的屬性和方法,不能對其修改。如屬性修改後,別人呼叫時可能要根據修改的內容增加或刪減引數才能實現呼叫
5c、有理數類的public方法是否設定合適?為什麼有的方法設定為private?
根據訪問許可權和修改許可權而定