Hallo zusammen, ich habe eine Frage bezüglich dieses Quelltexts. Es geht darum den Realteil und den Imaginärteil von komplexen Zahlen zu addieren. public class Komplex { public double re, im; public Komplex addieren(Komplex k) { Komplex ergebnis = new Komplex(); ergebnis.re = re + k.re; ergebnis.im = im + k.im; return ergebnis; die dazugehörige maindatei lautet: public class Beispiel { public static void main( String[] args) { Komplex k1 = new Komplex(); k1.re = 0.3; k1.im = -0.4; Komplex k2 = new Komplex(); k2.re = 2.5; k2.im =1.25; Komplex k3 = k1.addieren(k2); System.out.println("re="+k3.re); System.out.println("im="+k3.im); ich bin mir nicht sicher, wie ich die dritte Zeile der Klasse Beispiel interpretieren soll public Komplex addieren(Komplex k) { --> ist Komlex hier der Datentyp? --> ist addieren hier eine Methode der Klasse Komplex? --> bedeutet das (Komplex k) dass k eine Variable vom Datentyp Komplex ist? Wenn ich jetzt davon ausgehe, dass addieren eine Methode ist: Methoden bekommen ja immer ein () dahinter. Wann muss ich was in die Klammer reinschreiben und wann bleibt sie leer? Bedeutet diese Zeile: Komplex ergebnis = new Komplex(); dass ich eine Variable vom Datentyp Komplex anlege? Warum brauche ich hier das =new Komplex(); nochmal dahinter Da bin ich dann gar nicht mehr dahintergestiegen was da bedeuten soll??? ergebnis.re = re + k.re; ergebnis.im = im + k.im; Ich freue mich auf Eure Antworten! Im Vorraus schon mal vielen Dank!
Relchen schrieb: > --> ist Komlex hier der Datentyp? > --> ist addieren hier eine Methode der Klasse Komplex? > --> bedeutet das (Komplex k) dass k eine Variable vom Datentyp Komplex > ist? dreimal ja Relchen schrieb: > Bedeutet diese Zeile: Komplex ergebnis = new Komplex(); dass ich eine > Variable vom Datentyp Komplex anlege? auch richtig (korrigiere: Es ist ein Objekt der Klasse Komplex) > Warum brauche ich hier das =new > Komplex(); nochmal dahinter wenn du "Komplex ergebnis;" machst hast du nur den Speicher initialisiert, es steht aber noch kein Objekt dahinter, wobei manche Compiler das Objekt hinter dem Speicher automatisch instanziieren. > ergebnis.re = re + k.re; > > ergebnis.im = im + k.im; re und im kommen aus dem aktuellen Objekt. Mit "k." greifst du auf die Attribute des anderen Objekts zu. Anschließend weist du es dem Objekt ergebnis zu. In dem Objekt ergebnis steht dann in den Attributen (=Variablen) re und im die Summe der beiden Berechnungen. HTH
Erst mal vielen Dank für die Antwort! Nun bin ich schon ein großes Stück weiter. Eine Frage ist jetzt für mich noch offen geblieben. Und zwar steht ja in der dritten Zeile der Klasse Komplex: public Komplex addieren(Komplex k) { In der Klammer steht ja jetzt , dass k eine Variable vom Typ Komplex ist. Wann muss ich in die Klammer hinter die Methode was reinschreiben und wann bleibt sie leer? Hat das was mit der Übergabe zu tun?
> Hallo zusammen,
Hallo Relchen,
erst mal schöner formatieren, dann erkennt man auch, dass schließende
Klammern fehlern. Außerdem solltest du uns die Programmiersprache
angeben. Ich nehme an: C#?
1 | public class Komplex |
2 | {
|
3 | public double re, im; |
4 | |
5 | public Komplex addieren (Komplex k) |
6 | {
|
7 | Komplex ergebnis = new Komplex(); |
8 | ergebnis.re = re + k.re; |
9 | ergebnis.im = im + k.im; |
10 | return ergebnis; |
11 | }
|
12 | }
|
13 | |
14 | public class Beispiel |
15 | {
|
16 | public static void main( String[] args) |
17 | {
|
18 | Komplex k1 = new Komplex(); |
19 | k1.re = 0.3; |
20 | k1.im = -0.4; |
21 | Komplex k2 = new Komplex(); |
22 | k2.re = 2.5; k2.im =1.25; |
23 | Komplex k3 = k1.addieren(k2); |
24 | System.out.println("re="+k3.re); |
25 | System.out.println("im="+k3.im); |
26 | }
|
27 | }
|
> ich bin mir nicht sicher, wie ich die dritte Zeile der Klasse Beispiel > interpretieren soll > > public Komplex addieren(Komplex k) { > --> ist Komlex hier der Datentyp? > --> ist addieren hier eine Methode der Klasse Komplex? > --> bedeutet das (Komplex k) dass k eine Variable vom Datentyp Komplex > ist? Vereinfacht gesagt: ja. k ist ein Objekt vom Typ Komplex. > Wenn ich jetzt davon ausgehe, dass addieren eine Methode ist: Methoden > bekommen ja immer ein () dahinter. Wann muss ich was in die Klammer > reinschreiben und wann bleibt sie leer? Da "addieren" mit "public Komplex addieren(Komplex k);" deklariert ist, MUSS beim Aufruf der Parameter angegeben werden. In deinem Fall also vom Typ Komplex. > Bedeutet diese Zeile: Komplex ergebnis = new Komplex(); dass ich eine > Variable vom Datentyp Komplex anlege? Warum brauche ich hier das =new > Komplex(); nochmal dahinter Du legst ein Objekt vom Typ Komplex an. Du willst hier ein Objekt haben, nicht nur einen Zeiger vom Typ Komplex. Und das wird in C# mit "new" angelegt. > Da bin ich dann gar nicht mehr dahintergestiegen was da bedeuten soll??? > ergebnis.re = re + k.re; > ergebnis.im = im + k.im; "Ergebnis" ist vom Typ Komplex und die Klasse definiert zwei Membervariablen, nämlich "re" und "im". Diesen beiden Variablen weist du jetzt die Summe aus re (des aktuellen Objekts) und der übergebenen Objekts k zu. Das gleiche passiert mit im. Eine bessere Schreibweise wäre:
1 | ergebnis.re = this.re + k.re; |
2 | ergebnis.im = this.im + k.im; |
Gruß Thomas
Relchen schrieb: > Wann muss ich in die Klammer hinter die Methode was reinschreiben > und wann bleibt sie leer? Hat das was mit der Übergabe zu tun? Du musst da was reinschreiben, sobald du der Methode was übergeben willst. Es gibt auch Methoden, da brauchst du nichts rein zu schreiben. Wenn deine Klasse z.B. eine Funktion "clear" hätte, dann würde das so aussehen:
1 | public void clear (void); |
Aufruf:
1 | Komplex k1 = new Komplex(); |
2 | k1.clear (); |
Hier kannst und darfst du auch nichts in die Klammer schreiben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.