class Complex { private double real; private double imaginary; double im() { return imaginary; } public double re() { return real; } public double mag() { return Math.sqrt(imaginary*imaginary + real*real); } public double phase() { return Math.atan(imaginary / real); } public void setReIm(double r, double i) { real = r; imaginary = i; } public void setMagPhase(double m, double p) { real = m * Math.cos(p); imaginary = m * Math.sin(p); } public Object clone() { Complex result = new Complex(); result.setReIm(re(), im()); return result; } public static void main(String args[]) { Complex c = new Complex(); c.setReIm(1.0, 1.0); System.out.println("Real: " + c.re() + " Imaginary: " + c.im()); System.out.println("Magnitude: " + c.mag() + " Phase: " + c.phase()); c.setMagPhase(1.414, 0.785); System.out.println("Real: " + c.re() + " Imaginary: " + c.im()); System.out.println("Magnitude: " + c.mag() + " Phase: " + c.phase()); Complex c2 = (Complex)c.clone(); System.out.println("Clone Real: " + c2.re() + " Imaginary: " + c2.im()); } }