# Objektvariablen in Testklasse ausgeben



## denis7788 (12. Jan 2010)

Hallo!
Ich sitze hier an einer Aufgabe und komme einfach nicht drauf was ich falsch mache. Im ersten Teil muss ich eine Klasse schreiben, die Komplexe Zahlen miteinander addiert(und später mehr). Dann soll es noch eine Testklasse geben, die das Ergebnis liefert. Ich habe herausgefunden das ich die String toString() methode in die Klasse einbauen muss(davor hat die Testklasse nur Referenzen geliefert), aber weiter komme ich nicht(liefert immer 0.0,0.0i).
hier die Klasse:
class Complex {
	private double real, imag;


	/* Konstruktor, bildet Komplexe Zahl mit Realteil a & Imaginärteil b*/
	Complex(double a, double b) {

	}
	/* liefern Realteil & imaginärteil der komplexen Zahl*/
	double getReal() { return real;}
	double getImag() { return imag;}

	/* setzt die Werte im Konstruktor fest sodass ein Objekt complex(a,b) entsteht*/
	void setComplexZahl(double a, double b) { real = a; imag = b;}

	/* addiert zwei komplexe Zahlen this und arg miteinander und liefert neues Objekt Complex*/
	public Complex add (Complex arg){
		     double summeReal = this.getReal() + arg.getReal();
		     double summeImag = this.getImag() + arg.getImag();
		     return new Complex(summeReal, summeImag);
	}

	public String toString() {
	return summeReal() + "+" + summeImag() + "i";
	}
}


>>>>
und die Testklasse:

import javax.swing.JOptionPane;
import java.util.*;
class ComplexTest {
	public static void main (String[] args) {

	Complex eins = new Complex(2,4);
	Complex zwei = new Complex(5,7);
	System.out.println(eins.add(zwei).toString());
	}
}


Wäre schön wenn jemand helfen könnte.


----------



## function (12. Jan 2010)

```
public String toString() {
return summeReal() + "+" + summeImag() + "i";
}
```
die methoden summeReal und summeImag() gibt es nicht nur die variablen, bzw die methoden getReal() und getImag()


----------



## Final_Striker (12. Jan 2010)

```
public String toString() {
    return real + "+" + imag + "i";
}

class ComplexTest {

    public static void main (String[] args) {

         Complex eins = new Complex(2,4);
         Complex zwei = new Complex(5,7);
         Complex drei = eins.add(zwei);

         System.out.println(drei.toString());
    }
}
```


----------



## denis7788 (12. Jan 2010)

Danke erstmal für die Antworten! Zu "function": ja ist ein Fehler der sich beim Rumprobieren eingeschlichen hat. Es geht aber auch nicht mit den Variablen. Habe schon alles versucht( a,b bzw real,imag einzusetzen; auch die get Methoden durchprobiert). 
Zu "final striker": wenn ich es so mache wie beschrieben gibt er mir immernoch 0.0,0.0i raus(irgendwie auch logisch weils als return Wert der Methode steht). Aber wie könnte ich denn meine Variablen in die toString() methode weitergeben, bzw wie kann ich das Objekt new Complex aus der MEthode add() in meine Testklasse bekommen?


----------



## maki (12. Jan 2010)

Dein Konstruktor setzt/initialisiert keine Werte.


----------



## denis7788 (12. Jan 2010)

Danke für die Antwort! Es hat geklappt. Sitze da schon Stunden dran. Aber ich würde es gerne von Grund auf verstehen, damit ich es auch in unterschiedlichen Beispielen einsetzen kann. 
Was ich nicht verstehe:
1. warum brauche ich in meiner Klasse Complex die toString() Methode, wenn diese doch eigentlich in   der Testklasse auseichen würde um in einen String umzuwandeln?

2. meine toString() Methode gibt nach meinem Vertändnis als Rückgabewert den Wert in Variable real und den Wert der Variable imag mit einem Plus dazwischen & einem i dahinter aus-also wieso bekomme ich in der Testklasse als Rückgabe die Werte summeReal und summeImag des enuen Objektes der add() Methode?

3. ich muss Später auch multiplizieren. Wenn ich jetzt eine toString() MEthode fürs multiplizieren mache, woher weiß meine Testklasse welche toString MEthode ich ansprechen möchte(da ja in dieser + steht)


----------



## eRaaaa (12. Jan 2010)

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 10.2 Object ist die Mutter aller Klassen

Mehr kann man da wohl nicht zu sagen so langsam 

Gruß


----------

