类的封装与设计--复数类
作者:互联网
实验1:类的封装设计
一、实验内容:
按照数学领域对复数(Plural)的操作需求,设计复数类,并按照类的封装原则,对类进行优化。
提示:一个完整的复数由实部(real part)和虚部(virtual part)构成,例如0,-1,i,-i,-1+2.0i,1+i,-1.0-i等。在数学中,复数通常有加(plus)、减(minus)、乘(times)、求模(mod)四种主要运算。
二、实验要求:
(1)设计完整的复数类Plural,根据实验内容要求定义正确的属性和方法。
(2)设计测试类TestPlural,计算以下两个表达式(不考虑优先级),并输出运算结果:
(-1) + (-3i) - (2-2i) * (i) (表达式1)
|(3) + (-4+5.0i) * (-5.1-7.2i) - (-1-2.0i)| (表达式2)
(3)按照类的封装原则,对复数类进行优化。
要求1
//设计复数类
/*
属性:实部、虚部
方法:add、minus、mul、mod
*/
public class Plural {
double real,virtual;
Plural(double real,double virtual){
this.real=real;
this.virtual=virtual;
}
//加
public void add(Plural p)
{
this.real+=p.real;
this.virtual+=p.virtual;
}
//减
public void minus(Plural p)
{
this.real-=p.real;
this.virtual-=p.virtual;
}
//乘(a+bi)(c+di)=(ac-bd)+(bc+ad)i
public void mul(Plural p)
{
double tmpReal=this.real*p.real-this.virtual*p.virtual;
this.virtual=this.virtual*p.real+this.real*p.virtual;
this.real=tmpReal;
}
//mod 根号下a方+b方
public double mod()
{
return Math.sqrt(this.real*this.real+this.virtual*this.virtual);
}
public void printf()
{
System.out.print(this.real);
if(this.virtual>=0)
{
System.out.println("+"+this.virtual);
}else {
System.out.println(this.virtual);
}
}
}
要求2
//设计测试类
public class TestPlural {
public static void main(String[] args) {
// TODO Auto-generated method stub
//实例1
Plural p1=new Plural(-1,0);
// System.out.println(p1);
Plural p2=new Plural(0,-3);
Plural p3=new Plural(2,-2);
Plural p4=new Plural(0,1);
p1.add(p2);
p1.minus(p3);
p1.mul(p4);
p1.printf();
//实例2
Plural q1=new Plural(3,0);
Plural q2=new Plural(-4,5.0);
Plural q3=new Plural(-5.1,-7.2);
Plural q4=new Plural(-1,-2.0);
q1.add(q2);
q1.mul(q3);
q1.minus(q4);
System.out.print(q1.mod());
}
}
要求3
//类的封装设计
//private
private double real,virtual;
//获取实部
public double getReal()
{
return real;
}
//获取虚部
public double getVirtual() {
return virtual;
}
标签:real,封装,--,double,virtual,复数,new,Plural,public 来源: https://www.cnblogs.com/Calculus9/p/13880621.html