This class represents complex numbers, and defines methods for performing arithmetic on complex numbers

/* * Copyright (c) 2004 David Flanagan. All rights reserved. * This code is from the book Java Examples in a Nutshell, 3nd Edition. * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied. * You may study, use, and modify it for any non-commercial purpose, * including teaching and use in open-source projects. * You may distribute it non-commercially as long as you retain this notice. * For a commercial use license, or to purchase the book, * please visit http://www.davidflanagan.com/javaexamples3. */ /** * This class represents complex numbers, and defines methods for performing * arithmetic on complex numbers. */publicclassComplexNumber { // These are the instance variables. Each ComplexNumber object holds // two double values, known as x and y. They are private, so they are // not accessible from outside this class. Instead, they are available // through the real() and imaginary() methods below.privatedoublex, y; /** This is the constructor. It initializes the x and y variables */publicComplexNumber(doublereal,doubleimaginary) { this.x = real; this.y = imaginary; } /** * An accessor method. Returns the real part of the complex number. Note that * there is no setReal() method to set the real part. This means that the * ComplexNumber class is "immutable". */publicdoublereal() {returnx; } /** An accessor method. Returns the imaginary part of the complex number */publicdoubleimaginary() {returny; } /** Compute the magnitude of a complex number */publicdoublemagnitude() {returnMath.sqrt(x * x + y * y); } /** * This method converts a ComplexNumber to a string. This is a method of * Object that we override so that complex numbers can be meaningfully * converted to strings, and so they can conveniently be printed out with * System.out.println() and related methods */publicString toString() {return"{" + x + "," + y + "}"; } /** * This is a static class method. It takes two complex numbers, adds them, and * returns the result as a third number. Because it is static, there is no * "current instance" or "this" object. Use it like this: ComplexNumber c = * ComplexNumber.add(a, b); */publicstaticComplexNumber add(ComplexNumber a, ComplexNumber b) {returnnewComplexNumber(a.x + b.x, a.y + b.y); } /** * This is a non-static instance method by the same name. It adds the * specified complex number to the current complex number. Use it like this: * ComplexNumber c = a.add(b); */publicComplexNumber add(ComplexNumber a) {returnnewComplexNumber(this.x + a.x, this.y + a.y); } /** A static class method to multiply complex numbers */publicstaticComplexNumber multiply(ComplexNumber a, ComplexNumber b) {returnnewComplexNumber(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x); } /** An instance method to multiply complex numbers */publicComplexNumber multiply(ComplexNumber a) {returnnewComplexNumber(x * a.x - y * a.y, x * a.y + y * a.x); } }

1. | A class to represent Complex Numbers |