Números complejos Curso de Programación Java

Lección:

Más sobre Clases


Ejercicio:

Números complejos 31


Objetivo:

Un número complejo tiene dos partes: la parte real y la parte imaginaria. En un número como a+bi (2-3i, por ejemplo) la parte real sería "a" (2) y la parte imaginaria sería "b" (-3).

Cree una clase ComplexNumber con:
Un constructor para establecer los valores de la pieza real y la parte imaginaria.
Setters y getters para ambos.
Un método "ToString", que devolvería "(2,-3)"
Un método "GetMagnitude" para devolver la magnitud del número complejo (raíz cuadrada de a2+b2)
Un método "Add", para sumar dos números complejos (la parte real será la suma de ambas partes reales, y la parte imaginaria será la suma de ambas partes imaginarias)
Cree un programa de prueba para probar estas capacidades.


Código:

import java.util.*;
public class ComplexNumber
{
	protected double a, b;

	public ComplexNumber(double realPart, double imaginaryPart)
	{
		a = realPart;
		b = imaginaryPart;
	}

	public final double GetReal()
	{
		return a;
	}

	public final void SetReal(double a)
	{
		this.a = a;
	}

	public final double GetImaginary()
	{
		return b;
	}

	public final void SetImaginary(double b)
	{
		this.b = b;
	}

	public final String toString()
	{
		return "(" + a + "," + b + ")";
	}

	public final double GetMagnitude()
	{
		return Math.sqrt((a * a) + (b * b));
	}

	public final void Add(ComplexNumber c2)
	{
		a += c2.GetReal();
		b += c2.GetImaginary();
	}
}

public class Main
{
	public static void main(String[] args)
	{
		boolean debug = false;

		ComplexNumber number = new ComplexNumber(5, 2);
		System.out.println("Number is: " + number.toString());

		number.SetImaginary(-3);
		System.out.println("Number is: " + number.toString());

		System.out.print("Magnitude is: ");
		System.out.println(number.GetMagnitude());

		ComplexNumber number2 = new ComplexNumber(-1, 1);
		number.Add(number2);
		System.out.print("After adding: ");
		System.out.println(number.toString());

		if (debug)
		{
			new Scanner(System.in).nextLine();
		}
	}
}