天天看点

Java 面向对象程序设计

Java 实验二 面向对象程序设计

定义一个运算接口Calculate,它定义了四种方法:加(add)、减(sub)、乘(mul)、除(div)。

定义一个复数类Complex,它具有实部和虚部、构造方法、set方法(重新设置复数的值),以及public String ToString()方法

(实现复数的格式化输出:如 r3=3+4i 题目要求必须按照该种格式输出)。

定义一个高级复数类advComplex,它继承复数类Complex,实现运算接口Calculate定义的加、减、乘、除四种方法。

Java 面向对象程序设计
interface Calculate{		//定义一个运算接口
Complex add(Complex r);
Complex sub(Complex r);	
Complex mul(Complex r);
Complex div(Complex r);		//定义四种方法:加减乘除
}
class Complex{			//定义一个复数类Complex,具有实部和虚部
double x,y;
public Complex(double r,double i){	//构造方法
x=r;y=i;
}
public void set(double r,double i){	//设置方法(重新设置复数的值)
x=r;y=i;
}
public String toString(){		//对象描述信息(实现复数的格式化输出:如r3=3+4i)
	if(y>0)
		if(x==0)
			return y+"i";
		else
			return x+"+"+y+"i";
		else if(y==0)
			return x+"";
		else 
			if(x==0)
			return y+"i";
		return x+""+y+"i";
	}
}
public class advComplex extends Complex		//定义一个高级复数类advComplex,它继承复数类Complex
implements Calculate{				//实现Calculate接口(implements关键词)
public advComplex(double r,double i){
	super(r,i);				//调用父类构造方法
}
public Complex add(Complex r2){		//将复数与r2相加
return new Complex(x+r2.x,y+r2.y);
}
public Complex sub(Complex r2){		//将复数与r2相减
return new Complex(x-r2.x,y-r2.y);
}
public Complex mul(Complex r2){
	double a=x*r2.x-y*r2.y;
	double b=y*r2.x+x*r2.y;
	return new Complex(a,b);
}
public Complex div(Complex r2){
	if(r2.x==0&&r2.y==0){
System.out.println("Number Divided is 0,Error!");
	System.exit(0);
	}
	double c=r2.x*r2.x+r2.y*r2.y;
	double a=(x*r2.x+y*r2.y)/c;
	double b=y*r2.x-x*r2.y;
	return new Complex(a,b);
}
public static void main(String args[]){
advComplex r1=new advComplex(6,6);
advComplex r2=new advComplex(-6,8);
System.out.println("r1="+r1+",r2="+r2);
Complex r3=r1.add(r2);				//r1+r2=r3
System.out.println("r1+r2="+r3);
r3=r1.sub(r2);					//r1-r2=r3
System.out.println("r1-r2="+r3);
r1.set(1,2);
r2.set(1,-2);
System.out.println("r1="+r1+",r2="+r2);
Complex r4=r1.mul(r2);				//r4=r1*r2
System.out.println("r1*r2="+r4);
r4=r1.div(r2);					//r4=r1/r2
System.out.println("r1/r2="+r4);
	}
}