# boolean-Abfrage?



## Angelika_25 (12. Dezember 2007)

Hallo und zwar habe ich folgendes Problem.
Ich habe eine main-Klasse und eine andere Klasse (Konto und TestKonto). 
Ich habe in der Klasse mehrere Methoden:

*Konto.java*
public class Konto {
  private double kontoStand;
  private double betrag;

  //Konstruktor
  public Konto(double k) {
  this.kontoStand=k;
  }

public boolean einzahlen(double betrag) {

  if (betrag>0) {

      return true;
    }
    else
    {
     return false;
    }
  } 

 public double getKontoStand() {
     return this.kontoStand+=betrag;

   }
Jetzt möchte ich, wenn true zurückgegeben wird, den Betrag (den ich in der TestKlasse angeb) auf den Kontostand dazuaddiert wird. Des is ganz einfach, ich hab das auch schon öfters gemacht, aber irgend wie krieg ich des grad nicht hin. Ich brauch ja ne if-Verzweigung, ungefähr so: if(einzahlen=true) { this.kontoStand+=betrag}else{this.kontoStand=kontoStand}........aber so funktioniert es in der Klasse Konto jedenfalls schon  mal nicht......
Ich würde mich über eine schnelle Hilfe sehr freuen.
Liebe Grüße, Angelika.


----------



## MiMi (12. Dezember 2007)

Huhu
erstma willkommen unter den ProgrammierFrauen 
erstma benutz doch bitte die Code tags
[.java] code [./java] ohne die Punkte 

Dann versteh ich net genau deine methode "getKontoStand()" Du machst dort eine getMethode wo du aber den Betrag zufuegen willst. Eine get sollte nichts aendern sondern nur zurueckgeben 

```
public double getKontoStand() {
return this.kontoStand;
}
```

Dann mach dir eine methode in der du den Betrag zum alten hinzufuegen willst also eine *set*Methode

```
public double setKontoStand(double betrag) {
    this.kontoStand+=betrag;
}
```
Hierin kannst du dann deine methode *einzahlen* benutzen
in etwa

```
if (einzahlen(betrag)) {
    ...
} else {
   ....
}
```


----------



## javaCoder (12. Dezember 2007)

stimmt soweit. aber aus dem Setter würde ich noch ein Methode ohne Rückgabe machen.


```
public void setKontoStand(double betrag) {
          this.kontoStand+=betrag;
      }
```


----------



## MiMi (12. Dezember 2007)

@javaCoder
Das hab ich doch bereits geschrieben


----------



## Angelika_25 (12. Dezember 2007)

Sorry wegen den Code-Tags. Hab da drauf nicht geachtet..
Stimmt mit der get-Methode, das war Schwachsinn, ist mir eben bei deiner Antwort aufgefallen. Also jetzt:

```
public double getKontoStand() {
     return this.kontoStand;

   }
```

Ich hab ein Klassendiagramm:

*Konto*
-kontoStand: double
*+Konto (k:double)*
+einzahlen (betrag: double): boolean
+abheben(betrag: double): boolean
+getKontoStand():double


..........laut Klassendiagramm müsste es doch dann auch ohne set-Methode gehen, oder


----------



## MiMi (12. Dezember 2007)

Du kannst die if-Bedingung die ich dir oben bereits geschrieben hab, auch in deine "einzahlen"Methode nehmen, sicherlich. Nur das du dann in der Bedingung nicht die Methode aufrufst, sondern direkt schaust ob betrag>0
Aber normalerweise macht man getter und setter fuer so etwas. 
Ist das Klassendiagram vorgegeben?


----------



## MeinerEiner_80 (12. Dezember 2007)

Moin!



> Ich hab ein Klassendiagramm:
> 
> *Konto*
> -kontoStand: double
> ...



Eigentlich ist es klar:
Bei der Methode einzahlen überprüfst du, ob der einzuzahlende Betrag positiv ist.
Falls ja, addierst du den Betrag auf den Kontostand und gibst true zurück. Falls nein, wird false zurückgegeben. 
Somit kann man sicherstellen, das keine Negativbeträge eingezahlt werden können.. Dafür ist schließlich das Abheben da..

```
public boolean einzahlen(double betrag){
   if(betrag > 0){
      kontoStand = kontoStand+betrag;
      return true;
   }
   else
       return false;     
}
```

Abheben geht dann ähnlich..
Und bei getKontostand gibst du dann nur die Variable kontoStand zurück, so wie du es schon hast

@ mimi und Javacoder

```
public double setKontoStand(double betrag) {

          this.kontoStand+=betrag;
  
      }
```
Ist zum Beispiel meines Erachtens überhaupt nicht richtig. Denn es wird kein Kontostand gesetzt (was ein Setter machen sollte), sondern etwas hinzugefügt. 
Also das Klassendiagramm von Angelika macht durchaus mehr Sinn!

*grüssle*
MeinerEiner


----------



## MiMi (12. Dezember 2007)

@MeinerEiner
Also ich seh keinen Unterschied zwischen setzen und hinzufuegen.
Und wenn das tatsaechlich so falsch sein sollte, wie du meinst, dann werd cih mal in meinen alten Unterlagen schauen, weil ich bin mir zu 99% sicher das ich das so immer gemacht habe inner FH. Dann hab ich es wohl immer falsch gelernt!


----------



## Angelika_25 (12. Dezember 2007)

Ja das Klassendiagramm ist vorgegeben, ich würde nämlich normal auch lieber set-Methoden dafür nehmen. Ich soll die if-Bedingung in die einzahlen Methode mit reinbringen, aber wo? 
Ich hab das jetzt so gemacht:


```
public boolean einzahlen(double betrag) {
    if (betrag>0) {

      return true;
    }
    else
    {
     return false;
    }

      if (einzahlen(betrag)=true) {

          this.kontoStand+=betrag ;

      } else {

         System.out.println("Fehler: Einzahlungsbetrag = "+betrag);

      }
  }
```
Aber so klappt das auch nicht, wieso? Wo muss ich es denn in der Methode hinschreiben?
Liebe Grüße


----------



## deepthroat (12. Dezember 2007)

Hi.





MiMi hat gesagt.:


> @MeinerEiner
> Also ich seh keinen Unterschied zwischen setzen und hinzufuegen.


Nun, es ist schon ein Unterschied ob der Kontostand auf 500 € *gesetzt* wird, oder der Kontostand von 5.000 € auf 5.500 € *erhöht* wird... 


MiMi hat gesagt.:


> Und wenn das tatsaechlich so falsch sein sollte, wie du meinst, dann werd cih mal in meinen alten Unterlagen schauen, weil ich bin mir zu 99% sicher das ich das so immer gemacht habe inner FH. Dann hab ich es wohl immer falsch gelernt!


Ja, sieht wohl so aus.

Gruß


----------



## deepthroat (12. Dezember 2007)

Hi.





Angelika_25 hat gesagt.:


> Aber so klappt das auch nicht, wieso? Wo muss ich es denn in der Methode hinschreiben?


MeinerEiner hat dir doch bereits die Methode so wie sie aussehen muss hingeschrieben... 

Gruß


----------



## Angelika_25 (12. Dezember 2007)

Sorry habe einen Beitrag überlesen *g*..........habe wohl alles mal wieder viel zu kompliziert gesehen ........vielen Dank für eure gute und schnelle Hilfe!!
Liebe Grüße


----------



## javaCoder (12. Dezember 2007)

MiMi hat gesagt.:


> @javaCoder
> Das hab ich doch bereits geschrieben




double != void


----------



## MiMi (12. Dezember 2007)

@javaCoder
Ja hab vergessen das double in void zu aendern, so gings natuerlich net.


----------



## zerix (12. Dezember 2007)

Hallo,

@MiMi
sicher kannst du in der setKontostand so setzen wie angegeben. (also dazu addieren) Aber jeder Erfahrene Java-Entwickler wird das nicht so machen und wird auch denken, dass die Methode anders funktioniert.
Allgemein wird eine Setter-Methode dazu verwendet etwas komplett neu zu setzen.

Um ein hier passendes Beispiel zu zeigen

```
setKontostand(500);
System.out.println(getKontostand()); // Ausgabe = 500
setKontostand(200);
System.out.println(getKontostand()); // Ausgabe = 200
```

Was sich hinter einer Methode verbirgt entscheidet der Programmierer. Da man aber in den meisten Fällen nicht alleine an einem Programm arbeitet oder ein anderer sich vielleicht den Code anschaut, ist es besser einheitlich zu programmieren und auch die Methoden so zu benennen nachdem wofür sie gedacht sind. Ein Setter setzt den Wert einer Variablen neu. 


MFG

zEriX


----------



## MiMi (12. Dezember 2007)

Ja entschuldigung, reitet ruhig weiter auf mir rum, ihr seid ja die Besten. Hab nur versucht zu helfen.


----------



## zerix (12. Dezember 2007)

Das ist ja nicht böse gemeint. Hab es dir lediglich den unterschied aufzeigen. 


MFG

zEriX


----------



## MiMi (12. Dezember 2007)

[Klugscheisser]
DEN *U*nterschied
[/Klugscheisser]

Und wenn dir das dann 3 Leute sagen, wie denkst du dann?


----------



## MeinerEiner_80 (12. Dezember 2007)

[Scherz]
Dann würde ich denken, die letzten beiden wollten sich nur im Ruhm des Ersteren sonnen und haben eh keine Ahnung 
[/Scherz]


----------



## zerix (12. Dezember 2007)

MeinerEiner hat gesagt.:
			
		

> [Scherz]
> Dann würde ich denken, die letzten beiden wollten sich nur im Ruhm des Ersteren sonnen und haben eh keine Ahnung
> [/Scherz]



Stimmt. Ich wollte auch mal was erkären. Es war nur einer schneller, aber dennoch wollte ich es mir nicht nehmen lassen. 
Was war Java nochmal? ;-)

MFG

zEriX


----------



## MiMi (12. Dezember 2007)

Oh man Maenner, ihr seid echt die Witzbolde ueberhaupt


----------



## zerix (12. Dezember 2007)

Ja klar. So ist die Arbeit nicht so langweilig. 

MFG

zEriX


----------

