Questão : Crie uma Classe Complex para realizar aritmética com números complexos. Escreva um programa para testar sua classe.
Os números complexos tem a forma : realPart + imaginayPart * i (i = raiz quadrada de -1)
[b]Utilize variáveis de ponto flutuante para representar os dados private da classe. Forneça um construtor que permita que um objeto dessa classe seja inicializado quando ele for declarado. Forneça um construtor sem argumentos com valores padrão caso nenhum inicializador seja fornecido. Forneça métodos public para cada um dos itens seguintes:
A- Adição de dois números Complex : as partes reais somadas de um lado e as partes imaginarias são somadas de outro.
B- Subtração de dois números Complex: a parte real do operando direito é subtraída da parte real do operando esquerdo e a parte imaginaria do operando direito é subtraida da parte imaginaria do operando esquerdo
C- Imprimir os números Complex na forma(a,b), onde a é a parte real e b é a parte imaginária[/b]
[code]// Exercise 8.2 Solution
// Complex.java
// Definition of class Complex
public class Complex {
private double real;
private double imaginary;
// Initialize both parts to 0
public Complex() { this( 0.0, 0.0 ); }
// Initialize real part to r and imaginary part to 0
public Complex( double r ) { this( r, 0.0 ); }
// Initialize real part to r and imaginary part to i
public Complex( double r, double i )
{
real = r;
imaginary = i;
}
// Add two Complex numbers
public Complex add( Complex right )
{
return new Complex( real + right.real,
imaginary + right.imaginary );
}
// Subtract two Complex numbers
public Complex subtract( Complex right )
{
return new Complex( real - right.real,
imaginary - right.imaginary );
}
// Return String representation of a Complex number
public String toString()
{ return “(” + real + ", " + imaginary + “)”; }
}
// Exercise 8.2: ComplexTest.java
// Test the Complex number class
import javax.swing.*;
public class ComplexTest {
public static void main( String args[] )
{
Complex a, b;
a = new Complex( 9.9, 7.7 );
b = new Complex( 1.2, 3.1 );
String result = "a = " + a;
result += "\nb = " + b;
result += "\na + b = " + a.add( b );
result += "\na - b = " + a.subtract( b );
JOptionPane.showMessageDialog(
null, result, "Complex Test",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
}
[/code]
Dúvidas:
1- Esse código : public Complex() { this( 0.0, 0.0 ); }
é igual a esse : public Complex( double r, double i )
{
real = 0;
imaginary = 0;
}
???
2- Como o método add (quando chamado pela primeira vez )sabe que o atributo real = 9.9 (ou seja valor da parte real do obejto a ) ??? e right.real = 1.2 (ou seja o valor da parte real do objeto b ) e o mesmo acontece para imaginary = 7.7 (ou seja valor imaginario do objeto b) e o valor de right.imaginary = 3.1 ???: [code]public Complex add( Complex right )
{
return new Complex( real + right.real,
imaginary + right.imaginary );
}
[/code]
Resumindo , minha dúvida nesse ponto é como o método sabe quais atributos estão relacionados com quais obejtos??? tem haver com a forma na qual o objeto é chamado : a.add(b) ;
???
Muito grato pela ajuda , pois preciso continuar meus estudos e tô meio parado nessa questão !!! Obrigado pessoal !!!