Dúvida no código

Olá, segue o código que tenho dúvidas. Desde já agradeço.

// Classe de números complexos
class Complexo {
double x, y; // parte real e complexo, respectivamnte
public double Re() { // retorna a parte real
return x;
}
public double Im() { /retorna a parte imaginaria
return y;
}
public Complexo Vezes(Complexo c) { //Não entendi este método. O que é Vezes e qual sua relação com Complexo?
Complexo resultado; //O que é resultado e qual sua relação com Complexo?
resultado.x = x * c.x - y * c.y; //O que é c.x e c.y?
resultado.y = x * c.y + y * c.x;
return resultado;
}
public void print() {
System.out.println("(" + x + " + " + y + “i)”);
}
}
public class Teste {
public static void main(String args[]) {
Complexo z, w; z.x = 1;
z.y = 2;

 System.out.print( "O valor de z é ");
 z.print();
 System.out.println( "A parte real de z é = " + z.Re() );
 System.out.println( "A parte imaginária de z é = ", z.Im() );
 System.out.print("O valor de z ao quadrado é ");
 w = z.Vezes( z );
 w.print();

}
}

public Complexo Vezes(Complexo c) { //Não entendi este método. O que é Vezes e qual sua relação com Complexo? Complexo resultado; //O que é resultado e qual sua relação com Complexo? resultado.x = x * c.x - y * c.y; //O que é c.x e c.y? resultado.y = x * c.y + y * c.x; return resultado; }

//Não entendi este método. O que é Vezes e qual sua relação com Complexo?

Vezes é o nome do metodo que pertence a classe Complexo.

//O que é resultado e qual sua relação com Complexo?

resultado seria uma referencia a um objeto da classe Complexo (Alguem com maior conhecimento poderia confirmar???)

//O que é c.x e c.y?

São os valores dos atributos x e y da instancia da classe Complexo passada como parametro do metodo Vezes da Classe Complexo.

Acho que é isso…

[quote=marcus d]Olá, segue o código que tenho dúvidas. Desde já agradeço.

 public Complexo Vezes(Complexo c) { //[b]Não entendi este método. O que é [u]Vezes[/u] e qual sua relação com [u]Complexo[/u]?[/b]
     Complexo resultado; //[b]O que é [u]resultado[/u] e qual sua relação com [u]Complexo[/u]?[/b]
     resultado.x = x * c.x - y * c.y;  //[b]O que é [u]c.x[/u] e [u]c.y[/u]?[/b]
     resultado.y = x * c.y + y * c.x;
     return resultado; 
}

[/quote]

Só extendendo o que foi dito antes:

 public Complexo Vezes(Complexo c) {

Acima temos um método de nome Vezes que possui como parametro um objeto do tipo Complexo e retorna um objeto do tipo Complexo (que aliás é a própria Classe onde o método Vezes está declarado). Um detalhe: apesar de possível, não é recomendado nomear métodos começando com letras maiusculas, por padronização e legibilidade. A assinatura do método diz o seguinte: Visibilidade (Public) Retorno (Complexo) Nome-do-Metodo (Vezes) Parametros ((Complexo c)).

Complexo resultado;

Acima temos a declaração da variavel “resultado” que é do tipo Complexo. Faltou no código a instanciação dessa variável… (Complexo resultado = new Complexo()).

 resultado.x = x * c.x - y * c.y;  //[b]O que é [u]c.x[/u] e [u]c.y[/u]?[/b]

Acima, está dizendo que o atributo x da variavel “resultado” recebe o calculo definido. Em c.x e c.y são os atributos x e y do parametro c, que é do tipo Complexo (mesmo tipo da variavel “resultado”). O ideal seria y e x serem declarados na classe como private (privados), dessa forma você não teria acesso direto aos atributos, a não ser pelos métodos definidos (Im() e Re() )… como não são privados, c.y é o mesmo que c.Im()…

return resultado;  

Por fim, retorna o resultado, que é do tipo Complexo (como definido na assinatura do método) e possui os atributos x e y com valores da forma que foram calculados no corpo do método.

[]'s