# Probleme mit BlueJ und Bankkonto-Methoden



## Jats (22. Nov 2010)

Hey, 

ich habe mir mit BlueJ ein Bankkonto erstellt und möchte nun in die Methoden auszahlen und ueberweisen eine Pinabfrage einbauen .
Da man bei BlueJ ja praktisch schon eine Oberfläche hat und ich in den Methoden mitParametern arbeite, wollte ich eigentlich in der Zeile "public void auszahlen (int betrag) {" ein "int pinabfrage" vor int betrag setzen und den dann nachher in einer if-Abfrage mit einem vorher festgelegten Wert vergleichen lassen .
Das blöde ist nur, dass ich nachher in der Methode ueberweisen nur mit dem Parameter auszahlen arbeiten will, aber das geht ja nicht .. ist ja klar .. 
Aber wie kann ich das jetzt anders machen ?
Ich wollte zuerst eine eigene Methode zur Abfrage schreiben, die dann einen boolean zurückgibt, aber das wäre ja auch wieder nicht machbar, wenn ich ueberweisen so schreibe , oder ?

Also ich habe auf jeden Fall ein paar Probleme damit .. und eine Dispo-Funktion soll da auch noch rein, aber das kommt nachher .. ich hoffe, mir kann jemand helfen 

Hier der Code bis jetzt .. den Kram für die Abfrage habe ich jetzt schon eingefügt, dann wisst ihr, wie ich das meine .. 


```
public class Konto

{

    private int kontoNummer;
    private int kontoStand;
    private String kontoInhaber;
    private int pin;

    public Konto(int nr, String name)
    {

        kontoNummer=nr;
        kontoStand=50;
        kontoInhaber=name;
        pin=1234;

    }

    public void einzahlen (int betrag) 
    {
        if (betrag>0){

            kontoStand+=betrag;

        }
    }

    public void auszahlen (int betrag)  
    {
        if (pinabfrage == pin) {
            if (betrag>0 && betrag<=kontoStand) {

                kontoStand-=betrag;

            }
        }
    }

    public int getKontoStand(Konto kto) {

        return kto.kontoStand;

    }

    public void ueberweisen(Konto zielKonto, int betrag)
    {

        this.auszahlen(betrag);      
        zielKonto.einzahlen(betrag);    

    }
}
```


----------



## SlaterB (22. Nov 2010)

du sagst doch
> in die Methoden auszahlen und ueberweisen eine Pinabfrage einbauen .

warum nicht in ueberweisen  auch einen zweiten Parameter? 
die Überprüfung muss nicht mal unbedingt ein zweites Mal kodiert werden, auszahlen wird ja immer aufgerufen,
dann aber einbauen, dass nicht ins andere Konto eingezahlt wird wenn im eigenen Konto auszahlen nicht klappt wegen falscher PIN..


----------



## Jats (22. Nov 2010)

SlaterB hat gesagt.:


> du sagst doch
> > in die Methoden auszahlen und ueberweisen eine Pinabfrage einbauen .
> 
> warum nicht in ueberweisen  auch einen zweiten Parameter?
> ...



Hmm .. soll ich also "public void ueberweisen(Konto kto, int pinabfrage, int betrag){" schreiben, oder was ?
Weil eigentlich benutze ich auszahlen doch erst IN der Methode, dann ist das oben doch egal, oder nicht ?

EDIT: Oder muss ich dann unten auch nochmal pinabfrage in auszahlen reinschreiben ?

Alles klar, ich habe das ganze jetzt so gemacht:


```
public class Konto

{

    private int kontoNummer;
    private int kontoStand;
    private String kontoInhaber;
    private int pin;
    
    public Konto(int nr, String name)
    {

        kontoNummer=nr;
        kontoStand=50;
        kontoInhaber=name;
        pin=1234;
        max=3;

    }

    public void einzahlen (int betrag) 
    {
        if (betrag>0){

            kontoStand+=betrag;

        }
    }

    public void auszahlen (int pinabfrage, int betrag)  
    {
        if (pinabfrage == pin) {
            if (betrag>0 && betrag<=kontoStand) {

                kontoStand-=betrag;

            }
        }
    }

    public int getKontoStand(Konto kto) {

        return kto.kontoStand;

    }

    public void ueberweisen(Konto zielKonto,int pinabfrage, int betrag)
    {    
        if (pinabfrage == pin) {            
            if (betrag>0 && betrag<=kontoStand) {

                this.auszahlen(pinabfrage, betrag);      
                zielKonto.einzahlen(betrag);    

            }
        }
    }
}
```

Auf jeden Fall danke, hat funktioniert.

Kann mir vielleicht jetzt noch jemand bei dem Dispo helfen ?
Ich hab nämlich absolut keine Vorstellung, wie ich das machen soll .. 
eigentlich muss ich ja mit get und set arbeiten, oder ?
Also so, dass der Kontostand überprüft wird und ich den überzogenen Betrag mit einem vorher festgelegten Zinssatz bezahlen muss.

Ich würde dann auf jeden Fall mal so anfangen:


```
public class Konto

{

    private int kontoNummer;
    private int kontoStand;
    private String kontoInhaber;
    private int pin;
    private double zinssatz;

    public Konto(int nr, String name)
    {

        kontoNummer=nr;
        kontoStand=50;
        kontoInhaber=name;
        pin=1234;
        zinssatz=1.25%;           //Wenn man das so schreiben darf :S

    }
```


----------



## SlaterB (22. Nov 2010)

> Oder muss ich dann unten auch nochmal pinabfrage in auszahlen reinschreiben ? 

wo du die PIN abfragst musst du wissen, ich denke in auszahlen()? 
das ist eine Stelle, weder oben noch unten und schon gar nicht nochmal sondern zunächst nur eine Stelle

ob du zusätzlich in ueberweisen() prüfst ist schon interessanter, wie gesagt kannst du den Test von auszahlen() nutzen, wenn dort z.B. eine boolean zurückgegeben wird


----------



## SlaterB (22. Nov 2010)

% versteht Java nicht, aber das könntest du übersetzen, pro cent/zent = pro 100 = /100

zinssatz=1.25/100; 
bzw.
zinssatz=0.0125; 
wäre schonmal was

> und ich den überzogenen Betrag mit einem vorher festgelegten Zinssatz bezahlen muss.
wie soll das funktionieren, wann passiert das?
wenn direkt beim Auszahlen:
50 Euro Minus, 5 Euro Zinsen
-> 55 Euro Minus, wieder Zinsen (nur auf 5 oder auf die gesamten 55?)
-> .. Euro Minus
usw.
oder Extra-Methode die irgendwann von außen aufgerufen wird?

beschreibe erst in Worten oder auf Papier WANN WER WO WARUM WAS macht,
und dann baue es einfach exakt korrekt nach, einfacher gehts nicht


----------



## Jats (22. Nov 2010)

SlaterB hat gesagt.:


> % versteht Java nicht, aber das könntest du übersetzen, pro cent/zent = pro 100 = /100



Habe ich mir schon fast gedacht 

zinssatz=1.25/100; 
bzw.
zinssatz=0.0125; 
wäre schonmal was



SlaterB hat gesagt.:


> > und ich den überzogenen Betrag mit einem vorher festgelegten Zinssatz bezahlen muss.
> wie soll das funktionieren, wann passiert das?



Keine Ahnung .. ^^
Wäre es einigermaßen im Sinne des Erfinders, wenn man einfach den Betrag, um den man überzieht direkt beim Auszahlen verzinst und dann praktisch anstatt z.B. 50 einen Betrag von 50*(1,25/100) vom Konto abzieht ?

Ich habe selbst kein Konto und weiß leider nicht so wirklich, wie sowas funktioniert .. 
BTW: Die Überprüfung, ob der Kontostand negativ geworden ist, bzw. ob ich im Dispobereich bin muss doch in DIESEM Fall dann in die Methode rein, oder ?

Und sonst könnte ich die doch auch ans Ende der Methode schreiben, oder ?



SlaterB hat gesagt.:


> wenn direkt beim Auszahlen:
> 50 Euro Minus, 5 Euro Zinsen
> -> 55 Euro Minus, wieder Zinsen (nur auf 5 oder auf die gesamten 55?)
> -> .. Euro Minus
> ...



Okay .. also das ist mir dann bis jetzt klar .. nur eine Methode von außen ist doch eigentlich nicht möglich .. weil die ganzen Werte ja nur temporär sind und nicht ewig so bleiben .. ich meine Zinsen zahlt man ja eigentlich in Raten .. wäre ja dumm, wenn ich dann direkt wieder züruckzahlen müsste, obwohl ich ja überzogen habe, wenn ich gar kein Geld habe ^^

Ich kann mir das nur mit einer lokalen Variable vorstellen, aber viel mehr weiß ich jetzt noch nicht .. :/


----------



## SlaterB (22. Nov 2010)

tja, Varianten gibt es viele, nachfragen beim Aufgabensteller

> praktisch anstatt z.B. 50 einen Betrag von 50*(1,25/100) vom Konto abzieht ?

klingt zunächst am einfachsten, dann musst du ja nicht viel mehr sonst machen, rechne das einfach,
aber nicht pauschal für den Auszahlungsbetrag sondern nur den negativen Anteil falls es ihn gibt


----------



## Jats (22. Nov 2010)

SlaterB hat gesagt.:


> tja, Varianten gibt es viele, nachfragen beim Aufgabensteller



Jaa .. das ist so eine Sache ^^
Wurde uns halt nicht so mitgeteilt, es hieß einfach nur "Dispokredit einfügen" und als Hilfe waren die folgenden Worte gegeben .. dispo ja/nein dispoHoehe .. gut, wäre ich jetzt auch selbst drauf gekommen ^^ 



SlaterB hat gesagt.:


> > praktisch anstatt z.B. 50 einen Betrag von 50*(1,25/100) vom Konto abzieht ?
> 
> klingt zunächst am einfachsten, dann musst du ja nicht viel mehr sonst machen, rechne das einfach,
> aber nicht pauschal für den Auszahlungsbetrag sondern nur den negativen Anteil falls es ihn gibt



Alles klar, dann setze ich hier an und arbeite dann mit Bedingungen .. oder booelans ? 
Ich will eigentlich nicht schon wieder eine if-Abfrage drin haben .. naja, mal sehen .
Danke auf jeden Fall


----------

