1. 程式人生 > 資訊 >華為入局智慧汽車:軟硬體、生態和發展思路

華為入局智慧汽車:軟硬體、生態和發展思路

一.有理數類程式碼

package code;

public class RationalNum {
	private int Molecule;	//分子
	private int Denominator;	//分母
	
	public RationalNum(int Molecule, int Denominator) {
		this.Molecule = Molecule;
		this.Denominator = Denominator;
	}

	public int getMolecule() {
		return Molecule;
	}

	public void setMolecule(int molecule) {
		Molecule = molecule;
	}

	public int getDenominator() {
		return Denominator;
	}

	public void setDenominator(int denominator) {
		Denominator = denominator;
	}
	
	public	RationalNum addition(RationalNum N2) {	//加法
		int m=this.Molecule*N2.Denominator+N2.Molecule*this.Denominator;
		int d=this.Denominator*N2.Denominator;
		return new RationalNum(m,d);
	}
	
	public	RationalNum subtraction(RationalNum N2) {	//減法
		int m=this.Molecule*N2.Denominator-N2.Molecule*this.Denominator;
		int d=this.Denominator*N2.Denominator;
		return new RationalNum(m,d);
	}
	
	public	RationalNum multiplication(RationalNum N2) {	//乘法
		int m=this.Molecule*N2.Molecule;
		int d=this.Denominator*N2.Denominator;
		return new RationalNum(m,d);
	}
	
	public	RationalNum division(RationalNum N2) {	//除法
		int m=this.Molecule*N2.Denominator;
		int d=this.Denominator*N2.Molecule;
		return new RationalNum(m,d);
	}
	
	public boolean equals(RationalNum R2) {	//判斷是否相等
		if(this.subtraction(R2).getMolecule()==0) 
			return true;
		else
			return false;
	}
	public int compareTo(RationalNum R2) {	//比較大小
		if(this.subtraction(R2).getMolecule()>0)
			return 1;
		else if(this.subtraction( R2).getMolecule()==0)
			return 0;
		else
			return -1;
	}
	
	public double doubleValue() {	//轉換成double型
		return this.Molecule*1.0/this.Denominator;
	}
	
	public int intValue() {	//轉換成int型
		return (int)doubleValue();
	}
	
	public long longValue() {	//轉換成long型
		return (long)doubleValue();
	}
	
	public float floatValue() {	//轉換成float型
		return (float)doubleValue();
	}
	
	public String toString() {	//轉換成String型
		if(this.Denominator==1)
			return this.Molecule+" ";
		else
			return this.Molecule+"/"+this.Denominator;
	}
}

二.測試程式碼

package test;

import code.RationalNum;

public class Main {
	public static void main(String[] args) {
		RationalNum n1 = new RationalNum(5, 6);
		RationalNum n2 = new RationalNum(7, 8);
		System.out.println(n1.addition(n2));
		System.out.println(n1.subtraction(n2));
		System.out.println(n1.multiplication(n2));
		System.out.println(n1.division(n2));
		System.out.println(n1.equals(n2));
		System.out.println(n1.compareTo(n2));
		System.out.println(n1.toString());
		System.out.println(n1.doubleValue());
		System.out.println(n1.intValue());
		System.out.println(n1.longValue());
		System.out.println(n1.floatValue());
	}
}

執行結果截圖

三.討論

1、與c語言的有理數程式碼相比較,為什麼你設計的類更加面向物件?

​ 因為c語言的有理數程式碼是面向程式的執行過程,而Java則是面向物件的,編寫出一些功能性的程式碼,在運用時直接呼叫就行了。

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

​ 匯入我所編寫的有理數程式碼包。

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

​ 依賴;不影響。

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

​ 合適;因為有的方法不能隨意更改,而且複雜,設為private就能避免許多麻煩。