实验三:类设计实验
一、实验目的
练习并掌握根据具体需求设计类,并且设计可运行程序来验证设计的正确性。
二、实验内容
先创建一个类Complex设计复数运算程序,其中包括求模、加法、减法、乘法和显示,以此来进行|(37.4+29i)*(73.2-85.2i)+(-52+73i)-(25.4-27i)|的运算,然后创建另一个类TestComplex来调用Complex类里的方法,并输出结果。
三、实验设计
设计原理:类和方法的构造,测试程序的设计,调用类的方法。
设计方法:创建一个Complex类,写出求模、加法、减法、乘法和显示函数,再创建一个TestComplex类调用Complex类实现复数的运算以及输出结果。
设计过程:创建类Complex,定义实部和虚部,利用构造方法this构造实部和虚部,设计求模、加法、减法、乘法和显示的函数。创建程序TestComplex,设计主函数,调用Complex类,实现测试的实例数据计算,并输出结果。
设计结果:输出“|(37.4+29i)*(73.2-85.2i)+(-52+73i)-(25.4-27i)|”的字符串,并显示出结果。
四、实验过程
1.创建一个项目和包;
2.设计一个复数类,写出五个方法,复数的求模,加法、减法,乘法和显示;
3.设计一个可运行程序TestComplex,调用Complex类完成计算,并输出结果。
问题:两个类之间的联系关系不是很明确,尤其是在TestComplex中使用Complex的方法,在测试时对于数据的实现及结果的实现并不是很清楚。
解决方案:通过上课老师所讲的,解决了问题并且成功实现了复数的计算。
五、实验结果
测试数据:|(37.4+29i)*(73.2-85.2i)+(-52+73i)-(25.4-27i)|
实验现象:屏幕上显示 37.4+37.4i
73.2+73.2i
-52.0+-52.0i
25.4+25.4i
266.87999999999965+266.87999999999965i
214.87999999999965+214.87999999999965i
189.47999999999965+189.47999999999965i
实验分析:首先设计Complex类,其中包括加法,减法,乘法,求模,输出结果等五种方法,再设计一个可运行程序TestComplex类,调用Complex类里的方法,实现了复数的计算,输出结果,以此验证了Complex类的正确性。
详细测试结果分析
1:需要验证的复数有四部分,相乘,相加,相减,首先输出每部分复数,此时并未进行计算,只是赋值给复数
Complex类:
TestComplex类:
测试结果:
2:调用Complex类里面的乘法函数,进行第一部分与第二部分相乘,调用Complex类中乘法函数,然后输出计算结果
Complex类:
TestComplex类:
测试结果:
3:调用Complex类里面的加法函数,进行前面乘法的计算结果与第三部分相加,调用Complex类中加法函数,然后输出计算结果
Complex类:
TestComplex类:
测试结果:
4:调用Complex类里面的减法函数,进行前面加法的计算结果与第四部分相减,调用Complex类中减法函数,然后输出计算结果,这样就验证了Complex类设计的正确性,完成实验。
Complex类:
TestComplex类:
测试结果:
六、讨论与分析
知识理解:构造函数的定义与使用,类的定义与使用,如何测试数据,复数不同计算方法的实现;
结果分析:复数的运算可以很好地实现结果,并且利用可运行程序TestComplex来调用复数类完成表达式的运算,并输出结果
七、附录:关键代码(给出适当注释,可读性高)
package java57;
public class Complex {//Complex类
double realpart,virtualpart;//定义实部和虚部
Complex (double realpart,double virtualpart){
this.realpart =realpart;//用构造方法构造实部,虚部
this.virtualpart =virtualpart;
}
double mod() {//求模的方法
double modlength;
modlength=Math.sqrt(realpart*realpart+virtualpart*virtualpart);
return modlength;
}
Complex multiply(Complex b){//复数乘法
Complex result = new Complex(this.realpart*b.realpart -this.virtualpart *b.virtualpart ,this.realpart *b.virtualpart +this.virtualpart *b.virtualpart );
return result;
}
Complex plus(Complex b){//复数加法
Complex result = new Complex(this.realpart +b.realpart ,this.virtualpart +b.virtualpart );
return result;
}
Complex minus(Complex b){//复数减法
Complex result = new Complex(this.realpart -b.realpart ,this.virtualpart -b.virtualpart );
return result;
}
void show(){//显示输出的内容
if(realpart==0){
System.out.println(virtualpart);
}
if(virtualpart==0){
System.out.println(realpart);
}
else {
System.out.println(realpart+"+"+realpart+"i");
}
}
}
package java57;
public class TestComplex {//创建一个TestComplex类用于测试数据
public static void main(String[] args) {
// TODO Auto-generated method stub
Complex c1=new Complex(37.4,29);//调用复数类
Complex c2=new Complex(73.2,85.2);
Complex c3=new Complex(-52,73);
Complex c4=new Complex(25.4,-27);
double ret = c1.multiply(c2).plus(c3).minus(c4).mod();
c1.show();
c2.show();
c3.show();
c4.show();
c1.multiply(c2).show();
c1.multiply(c2).plus(c3).show();
c1.multiply(c2).plus(c3).minus(c4).show();//实现复数类中的不同方法并输出结果
}
}
注:每个部分根据情况可以再分子标题,前提是层次清晰、逻辑性强。
实验三:类设计实验
一、实验目的
练习并掌握根据具体需求设计类,并且设计可运行程序来验证设计的正确性。
二、实验内容
先创建一个类Complex设计复数运算程序,其中包括求模、加法、减法、乘法和显示,以此来进行|(37.4+29i)*(73.2-85.2i)+(-52+73i)-(25.4-27i)|的运算,然后创建另一个类TestComplex来调用Complex类里的方法,并输出结果。
三、实验设计
设计原理:类和方法的构造,测试程序的设计,调用类的方法。
设计方法:创建一个Complex类,写出求模、加法、减法、乘法和显示函数,再创建一个TestComplex类调用Complex类实现复数的运算以及输出结果。
设计过程:创建类Complex,定义实部和虚部,利用构造方法this构造实部和虚部,设计求模、加法、减法、乘法和显示的函数。创建程序TestComplex,设计主函数,调用Complex类,实现测试的实例数据计算,并输出结果。
设计结果:输出“|(37.4+29i)*(73.2-85.2i)+(-52+73i)-(25.4-27i)|”的字符串,并显示出结果。
四、实验过程
1.创建一个项目和包;
2.设计一个复数类,写出五个方法,复数的求模,加法、减法,乘法和显示;
3.设计一个可运行程序TestComplex,调用Complex类完成计算,并输出结果。
问题:两个类之间的联系关系不是很明确,尤其是在TestComplex中使用Complex的方法,在测试时对于数据的实现及结果的实现并不是很清楚。
解决方案:通过上课老师所讲的,解决了问题并且成功实现了复数的计算。
五、实验结果
测试数据:|(37.4+29i)*(73.2-85.2i)+(-52+73i)-(25.4-27i)|
实验现象:屏幕上显示 37.4+37.4i
73.2+73.2i
-52.0+-52.0i
25.4+25.4i
266.87999999999965+266.87999999999965i
214.87999999999965+214.87999999999965i
189.47999999999965+189.47999999999965i
实验分析:首先设计Complex类,其中包括加法,减法,乘法,求模,输出结果等五种方法,再设计一个可运行程序TestComplex类,调用Complex类里的方法,实现了复数的计算,输出结果,以此验证了Complex类的正确性。
详细测试结果分析
1:需要验证的复数有四部分,相乘,相加,相减,首先输出每部分复数,此时并未进行计算,只是赋值给复数
Complex类:
TestComplex类:
测试结果:
2:调用Complex类里面的乘法函数,进行第一部分与第二部分相乘,调用Complex类中乘法函数,然后输出计算结果
Complex类:
TestComplex类:
测试结果:
3:调用Complex类里面的加法函数,进行前面乘法的计算结果与第三部分相加,调用Complex类中加法函数,然后输出计算结果
Complex类:
TestComplex类:
测试结果:
4:调用Complex类里面的减法函数,进行前面加法的计算结果与第四部分相减,调用Complex类中减法函数,然后输出计算结果,这样就验证了Complex类设计的正确性,完成实验。
Complex类:
TestComplex类:
测试结果:
六、讨论与分析
知识理解:构造函数的定义与使用,类的定义与使用,如何测试数据,复数不同计算方法的实现;
结果分析:复数的运算可以很好地实现结果,并且利用可运行程序TestComplex来调用复数类完成表达式的运算,并输出结果
七、附录:关键代码(给出适当注释,可读性高)
package java57;
public class Complex {//Complex类
double realpart,virtualpart;//定义实部和虚部
Complex (double realpart,double virtualpart){
this.realpart =realpart;//用构造方法构造实部,虚部
this.virtualpart =virtualpart;
}
double mod() {//求模的方法
double modlength;
modlength=Math.sqrt(realpart*realpart+virtualpart*virtualpart);
return modlength;
}
Complex multiply(Complex b){//复数乘法
Complex result = new Complex(this.realpart*b.realpart -this.virtualpart *b.virtualpart ,this.realpart *b.virtualpart +this.virtualpart *b.virtualpart );
return result;
}
Complex plus(Complex b){//复数加法
Complex result = new Complex(this.realpart +b.realpart ,this.virtualpart +b.virtualpart );
return result;
}
Complex minus(Complex b){//复数减法
Complex result = new Complex(this.realpart -b.realpart ,this.virtualpart -b.virtualpart );
return result;
}
void show(){//显示输出的内容
if(realpart==0){
System.out.println(virtualpart);
}
if(virtualpart==0){
System.out.println(realpart);
}
else {
System.out.println(realpart+"+"+realpart+"i");
}
}
}
package java57;
public class TestComplex {//创建一个TestComplex类用于测试数据
public static void main(String[] args) {
// TODO Auto-generated method stub
Complex c1=new Complex(37.4,29);//调用复数类
Complex c2=new Complex(73.2,85.2);
Complex c3=new Complex(-52,73);
Complex c4=new Complex(25.4,-27);
double ret = c1.multiply(c2).plus(c3).minus(c4).mod();
c1.show();
c2.show();
c3.show();
c4.show();
c1.multiply(c2).show();
c1.multiply(c2).plus(c3).show();
c1.multiply(c2).plus(c3).minus(c4).show();//实现复数类中的不同方法并输出结果
}
}