实验一 复数类的设计

内容

分析复数类的设计过程和练习测试方法,主要包括以下几个部分:
1、复数类的总体设计,包括如何从复数这种数学类型中抽象出属性和方法,给出该类的大致结构;
2、测试类的设计,为何需要main方法?如何创建复数对象,如何从用户需求分析出发将数学表达式
p5 = p1+p2-p3*p4
利用面向对象设计思想转换为程序表达式
p5=p1.plus(p2).minus(p3).multiply(p4);
3、如何从程序表达式完善复数类的方法?(以plus方法为例,分析该方法的传入参数、返回参数类型、方法体的设计过程);
4、根据数学中对复数字符串的表达习惯,全面分析所有可能情况,完善复数类的printString()方法的方法体,并在测试类中举出所有可能情况的测试用例,调用printString()方法显示复数字符串的结果,并分析结果的正确性。

报告

一、实验目的
1、熟悉使用Eclipse编程
2、进行复数类的设计并测试

二、实验内容
1、复数类的总体设计,包括如何从复数这种数学类型中抽象出属性和方法,给出该类的大致结构;
2、测试类的设计,为何需要main方法?如何创建复数对象,如何从用户需求分析出发将数学表达式 p5 = p1+p2-p3*p4利用面向对象设计思想转换为程序表达式p5=p1.plus(p2).minus(p3).multiply(p4);
3、如何从程序表达式完善复数类的方法?(以plus方法为例,分析该方法的传入参数、返回参数类型、方法体的设计过程);
4、根据数学中对复数字符串的表达习惯,全面分析所有可能情况,完善复数类的printString()方法的方法体,并在测试类中举出所有可能情况的测试用例,调用printString()方法显示复数字符串的结果,并分析结果的正确性。

三、概要设计
1、需求分析过程
对于复数类的总体设计,一个是抽象出复数的属性,另一个是我们需要对复数做一个加、减、乘、模的这些运算。
2、总体设计方案
对于复数类的总体设计,我们需要对复数这种数学模型抽象出以下的属性和方法。首先是复数抽象出来的属性,一个是实部,另一个是虚部,在程序里面我定义这样的real和image。然后是复数类的方法,因为我们需要对复数做一个加、减、乘、模的这些运算,所以在复数类里,我也要依次写出这些运算所需要的方法。

四、详细设计

1、类的设计

首先,我先定义出Plural这样的一个类,在这个类里面我给出了int类型的两种属性,一个是real,表示实部,一个是image,表示虚部。

java构造复数类 java设计复数类_java

然后,给出带参数的构造方法和不带参数的构造方法

java构造复数类 java设计复数类_复数类_02

之后在一个数在这个复数类里,我们取出这个复数的实部和虚部。

java构造复数类 java设计复数类_测试类_03

接下来是对运算方法的构造,这里的传入参数是一个复数a,这里的返回参数类型是Plural的这样的复数类型,之后返回值是result的这样新的复数,计算后,后面再调用方法时就可以用这个新的复数继续去计算,可以连续使用这样的方法。下面我就以plus为例。

java构造复数类 java设计复数类_复数类_04

然后我们对复数输出方法进行构造,根据数学中对复数的表达习惯进行一个输出,先是实部接上虚部后面加上i。

java构造复数类 java设计复数类_测试类_05

最后是对复数模长的一个输出,我把求模直接放进输出里面。

java构造复数类 java设计复数类_字符串_06

这里我对Plural复数类就构造完了。

2、事件设计

我首先是在main函数里面创建里p1,、p2、p3、p4的复数对象,这里面使用main函数,是用来做运算的,包括数值运算,输出。

java构造复数类 java设计复数类_字符串_07

之后定义复数p5,然后进行复数之间的运算

java构造复数类 java设计复数类_复数类_08

最后,我们对所需求的进行打印

java构造复数类 java设计复数类_java构造复数类_09

五、实验结果

下面是我的实验结果

java构造复数类 java设计复数类_java构造复数类_10

p1是1+0i,而数学表达中就是实数1,结果正确
p2是0+1i,数学表达中把0省略就位i,结果正确
p3和p4分别是虚部为正和为负的情况,结果正确
p5是p1、p2、p3、p4的运算结果,结果正确
最后为p5的模。
六、讨论与分析
本次实验,对复数类的设计让我更加熟悉Java语言,并且更加明确Java语言中的类与对象的性质。在实验中也出现了许多问题,第一是对类的理解,原先我对类的含义很模糊,现在我明确了,类就是一个模板,他是用来描述对象的一类性质和行为,就比如C语言中int a这样定义变量,而类就是这样定义其他对象所用的。第二,一个类需要明确他构造方法的,这个类是否带有参数等等。第三,就本次实验而言,让我想的时间最长的就是方法,比如plus方法,一开始我的返回类型写错,我写的是void,之后是我的返回值没有重新返回这个新的复数,倒是我说算的复数运算总是错误的,在之后的实验中,我将注意这些。这是复数类的问题。在测试类中,在本次实验我认为最重要的是复数对象的创建,一定是Plural p= new Plural()这样的。这次实验做下来异常的费劲,问题在于理论不够扎实,动手少,以后我将多动手,多理解。