Klassen Klasse Konto

kathrin1

Mitglied
hallo,

ich habe hier diese aufgabe:

"schreiben sie eine klasse konto, welche die kontonummer, den kontostand und den namen des kontobesitzers beinhaltet. fügen sie einen standardkonstruktor hinzu, welcher den namen auf unbekannt, und die Nr. sowie kontostand auf 0 setzt. fügen sie einen weiteren konstruktor hinzu, welcher die drei zuvor genannten werte auf die ihm übergebenen werte setzt."

ich hab das jetzt mal gemacht aber bin mir nicht sicher ob das stimmt.
vor allem verstehe ich den satz " fügen sie einen standardkonsturktor hinzu, welcher....."
ich dachte der standardkonsstruktor kommt von allein wenn man sonst keinen konstruktor macht? wie kann man dann einen stanadrkonstuktor selber erzeugen??

also mein programm sieht so aus..

Java:
public class Konto {
	
	public String name;
	public double kontostand;
	public int kontonummer;
	
	public Konto (){
		
		name ="unbekannt";
		kontostand = 0;
		kontonummer =0;
	}

	public Konto (String name,double kontostand,int kontonummer){
		
		this.name=name;
		this.kontostand=kontostand;
		this.kontonummer=kontonummer;
	}
}


oder hätte man da auch schon die objekte erzeugen müssen?
aber die erzeugt man doch dann in der main methode und nicht hier.
 
Zuletzt bearbeitet von einem Moderator:

VfL_Freak

Top Contributor
Moin,

nein, das schaut korrekt aus, da Du ja (zunächst) nur die Klasse mit den Konstruktoren erzeugen sollst!

Kleiner Tipp am Rande (kein Muss, sondern eine Empfehlung) :
benenne die Variablen nicht gleich - irgendwann wirst Du nicht mehr durchblicken
Java:
public class Konto 
{
    public String sName;
    public double dKontostand;
    public int iKontonummer;

    public Konto ()
    {
        sName = "unbekannt";
        dKontostand = 0.0;
        iKontonummer = 0;
    }

    public Konto( String name, double kontostand, int kontonummer )
    {
        this.sName = name;
        this.dKontostand = kontostand;
        this.iKontonummer = kontonummer;
    }
}

Gruß
Klaus
 
H

helper123

Gast
Mit Standardkonstruktor ist immer ein Konstruktor ohne Parameter gemeint. Dieser wird nur ohne Inhalt erzeugt, weil du aber dort den Kontostand auf 0 und den Namen auf "unbekannt" setzen sollst, musst du ihn selber hinzufügen.
Deine Quellcode ist so schon richtig, wie auch die Leute vor mir schon geschrieben haben.
 

kathrin1

Mitglied
ok dankeschön erst mal :)

ich soll die klasse jetzt erweitern in dem ich eine getter und eine setter methode für das lesen und das setzen des kontostandes mache

ist das dann so richtig?

Java:
public double getKontostand () {

return kontostand;

}


public void setKonto (double Kontostand) {

this.kontostand = kontostand;

}



oder soll man das für alle attribute des kontostandes machen?
eigentlich reichts doch so oder?
 
Zuletzt bearbeitet von einem Moderator:

kathrin1

Mitglied
ok danke fürs antworten:)

jetzt soll man noch eine methode einzahlen schreiben welche eine ihr zu übergebende geldmenenge auf das konto hinzufügt.

ich hab das mal so gemacht:

public double einzahlen (double x) {

x=kontostand;
return x;


ich bin mir aber nicht sicher..ist bestimmt falsch , wäre auch irgendwie zu einfach so?^^

achso nein..man kann doch gar nicht den wert im parameter zurückgeben oder?
also return x ist doch ansich schon falsch....

also dann vll eher so?:

public double einzahlen (double x){
double z;
z=kontostand;
return z;


???
 
Zuletzt bearbeitet von einem Moderator:

Andi_CH

Top Contributor
Java:
public void setKonto (double Kontostand) {
	this.kontostand = kontostand;
}

Das geht schief :)
Die Anweisung unten macht this.kontostand = this.kontostand weil der Parameter Kontostand heisst und es eine lokale Variable kontostand gibt

Ich bin ein absoluter Gegner davon, dass Parameter gleich heissen wie Attribute - genau aus dem Grund!

einzahlen muss IMO nichts zurückgeben. Wer einbezahlt weiss wieviel er einbezahlt hat (dass muss er nicht per returnwert erfahren) und der kontostand kann ja andres abgefragt werden.

Java:
package com.javaforum.test;

public class Konto {

	public String mName;
	public double mKontostand;
	public int mKontonummer;

	public Konto (){
		mName ="unbekannt";
		mKontostand = 0;
		mKontonummer =0;
	}

	public Konto (String pName, double pKontostand,int pKontonummer){
		mName = pName;
		mKontostand = pKontostand;
		mKontonummer = pKontonummer;
	}

	public double getKontostand () {
		return mKontostand;
	}


	public void setKonto (double pKontostand) {
		mKontostand = pKontostand;
	}
	
	public void einzahlen (double pBetrag) {
		mKontostand += pBetrag;
	}
}
 
M

maki

Gast
Ich bin ein Gegener davon dass Parameter gleich heissen wie Attribute - genau aus dem Grund!
Sie heissen nicht gleich, namen sind in Java "case sensitive".

Immer noch kein Grund falsche Dinge zu predigen...
 

kathrin1

Mitglied
sorry....bitte gaaaaaanz langsam bevor ich amok laufe...( bin grad etwas gestresst haben morgen java klausur):(


also die bezeichner im konstuktor dürfen schon so heißen wie ich die attribute benannt habe oder? auch wenns unübersichtlich ist?

andi_ch
warum sind bei dir im konsturktor alle this weg auf einmal?
 

Andi_CH

Top Contributor
Namenskonventionen, der TS hat sie nicht eingehalten, daher der Fehler.
Jetzt kommst du mit deinen eigenen, nicht-Java konformen Namenskonventionen. :noe:

Ich bin nicht der Erste hier ( -> VLF Freak) und nicht alle Konventionen sind auch gut!
Das zeigt genau das Beispiel mit dem gross geschriebenen Paramter.

Eclipse warnt zwar, dass das Statement keinen Effekt hat aber warnt nicht davor, dass der Paramter nicht verwendet wird - einen solchen Fehler kann man unter Umständen extrem lange suchen.

Es ist übrigens nicht meine Notation (mir wäre die C_und_C++Notation_immer_noch_lieber :) ) es ist die hier am weitesten verbreitete. An mindestens einer Hochschule so doziert und in vielen Industrieprojekten so per Projketguidelines vorgeschrieben.

Ich verstosse lieber gegen Konventionen und empfehle das auch, als dass ich X Stunden nerventötender Suche hinter mich bringe.

Also TO - denk darüber nach was hilfreicher ist bei der fehlersuche in deiner einzahlen() Methode - gleiche Namen und lange suche bei Tippfehlern oder wenn mal ein this fehlt, oder ein kleiner Verstoss gegen Konventionen.
 
M

maki

Gast
atribute/variablen schreibt man klein, ohne präfix, Klassen schreibt man groß.
Setter und Getter halten die Konvention auch ein und heissen wie das Attribute + ein set oder get davor, dann wird der erste buchstabe des attibrutes groß geschireben.

Der Fehler:
Java:
public void setKonto (double kontostand)
sollte lauten:
Java:
public void setKontostand (double kontostand)
oder besser gleich:
Java:
public void setKontostand (final double kontostand)

Dazu noch die Attribute und sonstige Bezeichner in eEnglisch halten, sonst kommt Denglisch dabei raus wie zB. setKontostand.
 

kathrin1

Mitglied
ok also das:

Java:
 public void einzahlen (double pBetrag) {
        mKontostand += pBetrag;
    }


wäre also richtig?


ok das es keinen rückgabetyp braucht leuchtet ein

und die ziele da macht ja im prinzip

kontostand = betrag + kontostand;




das wäre die lösung der teilaufgabe?

also eigetnlich nicht sehr schwer?
 

VfL_Freak

Top Contributor
Nun mal ganz mit der Ruhe :D

Wichtig ist einen die Schreibweise einzelner Variablen, die jedesmal, wenn Du Ihnen was machen willst, gleich sein (dabei auch auch Groß- und Kleinschreibung achten!)

Wichtig ist den richtigen Wert zuzuweisen !

Mal ganz allgemein ausgedrückt, damit es klarer wird :
Java:
public class XYZ 
{
    public String strABC;
 
    public XYZ()
    {
        strABC = "unbekannt";
    }
 
    public XYZ( String strMNO )
    {
        strABC = strMNO;
    }
}

Besser ??

Gruß
Klaus
 
M

maki

Gast
Ich bin nicht der Erste hier ( -> VLF Freak) und nicht alle Konventionen sind auch gut!
Das zeigt genau das Beispiel mit dem gross geschriebenen Paramter.
...
Du als bekennender Java Anfänger solltest auch in der Lage sein dazuzulernen.
Sicherlich, du warst nicht der erste hier der die Konvention missachtet hat, meine Kritik muss sich also auch der VFL_Freak anhören ;)

Was an den Konventionen gut oder schlecht ist kannst du noch gar nicht beurteilen, dazu fehlt dir Hintergrundwissen, wie zB. der JavaBeans Standard.

Die von dir vorgeschlagegen Konventionen stammen aus Zeiten in denen es noch keine intelligenten IDEs gab (sondern eher Texteditoren mit eingbautem Compiler), sind in modernen IDEs wie Eclipse/Netbeans nicht nur überflüssg, sondern auch hinderlich, man denke nur an die ganzen Code Generationsfunktionen in Eclipse(create Getter/Setters, etc. pp.), die sind mit deiner Konvention nicht nutzbar , Refactoringfunktionen aus Eclipse funktionieren damit auch nicht wirklich.

Alles in allem sollte man sich an die Konventionen halten, schliesslich gehören die zu Java, jeder Javaentwickler kennt sie und versteht sie.

ok also das:

public void einzahlen (double pBetrag) {
mKontostand += pBetrag;
}


wäre also richtig?
..
Nein.

Nein.
 
Zuletzt bearbeitet von einem Moderator:

kathrin1

Mitglied
atribute/variablen schreibt man klein, ohne präfix, Klassen schreibt man groß.
Setter und Getter halten die Konvention auch ein und heissen wie das Attribute + ein set oder get davor, dann wird der erste buchstabe des attibrutes groß geschireben.

Der Fehler:
Java:
public void setKonto (double kontostand)
sollte lauten:
Java:
public void setKontostand (double kontostand)
oder besser gleich:
Java:
public void setKontostand (final double kontostand)

Dazu noch die Attribute und sonstige Bezeichner in eEnglisch halten, sonst kommt Denglisch dabei raus wie zB. setKontostand.


achso ich weiß gar nicht genau warum ich da konto genommen habe?????:L
also kontostand...aber warum final double kontostand?
der wird doch später evtl noch verändert oder?
 
M

maki

Gast
achso ich weiß gar nicht genau warum ich da konto genommen habe??
Halte dich einfach an die Konvention :)

also kontostand...aber warum final double kontostand?
der wird doch später evtl noch verändert oder?
Weil der Compiler dich dadurch auf Fehler aufmerksam machen kann.
Parameter bei Standard setter/getter (nach JavaBeans) werden nicht verändert, und ist auch sonst nciht zu empfehlen, von ausnahmen abgesehen aber das ist hier nicht der Fall.
 
G

Gonzo17

Gast
Woher kommt denn jetzt k? Die Variable wurde da nichtmal initialisiert, deswegen wirst du auch Mecker vom Compiler bekommen. Und was ist mit x?
 
M

maki

Gast
ok dann vll so?


public double einzahlen (double x) {

double k;
kontostand = k+kontostand;

}





so??
Was wird das?

Eine zufällige Ansammlung von Buchstaben?
Korrekte Beispiele habe ich dir schon gezeigt..

Java:
public void einzahlen (final double betrag) {
    kontostand += betrag;
}
 
Zuletzt bearbeitet von einem Moderator:

kathrin1

Mitglied
Was wird das?

Eine zufällige Ansammlung von Buchstaben?
Korrekte Beispiele habe ich dir schon gezeigt..

Java:
public void einzahlen (final double betrag) {
    kontostand += betrag;
}

ja und ich habe doch das "korrekte" bsp in meins übertragen also anstatt betrag meinen bezeichner udn du meintest das ist falsch????
 

kathrin1

Mitglied
du hast ja DAS:

public void einzahlen (final double betrag) {
kontostand += betrag;
}

und ich hab es umgeändert in DAS

public void einzahlen (double x) {

kontostand += x;
}

anstatt betrag nehme ich halt ein x ist doch egal oder?
das final kann ich doch weglassen oder?
und anssonsten...was ist daran noch falsch?
oder bin ich blind??
 
M

maki

Gast
Jetzt mal langsam, du hattest das hier:
Java:
public double einzahlen (double x) {

double k;
kontostand = k+kontostand;

}
.. und das ist falsch, nicht mal kompilierbar ;)
 

kathrin1

Mitglied
ja das war doch dann danach..aber davor hatte ich doch schon das was ich eben gepostet habe...oder nicht????:L


habe auch mittlerweile gemekrt das das andere nix ist^^
wäre aber das k initialisiert mit 0 wäre es ein normaler code..der wohl aber evtl nicht das gewünscht ergebnis gebracht hätte
 

Andi_CH

Top Contributor
andi_ch
warum sind bei dir im Konstruktor alle this weg auf einmal?

Weil es die nicht braucht wenn man geschickte Namen verwendet:

Betreffend Namen - Klausur? Genau da wäre es wichtig - ein Tippfehler und es läuft nicht!

Bitte schreib doch JAVA Tags um deinen Code - es ist wirklich besser lesbar - der Hinweis auf beliebige Reihenfolge von Buchstaben könnte so zu Verstehen sein.

Allerdings was soll das double k dort? Das braucht es einfach nicht!
 

kathrin1

Mitglied
sooooo noch mal ne kleine änderung

Java:
public void einzahlen (double x) {

kontostand = x +kontostand;

}

hab die eine zeile noch umgeändert mich verwirrt das += immer..


sooo ist das jetzt richtig? ich hoffs;(
 

Andi_CH

Top Contributor
Dein Posting mit JAVA Tags!

du hast ja DAS:
Java:
public void einzahlen (final double betrag) {
	kontostand += betrag;
}
und ich hab es umgeändert in DAS
Java:
public void einzahlen (double x) {
	kontostand += x; 
}

anstatt betrag nehme ich halt ein x ist doch egal oder?
Es ist eben nicht egal weil x schlicht und egreifend nichts aussagt!
Es ist ein Grundsatz dass Bezeichnungen eine Bedeutung haben sollen - nein besser müssen

das final kann ich doch weglassen oder?
Ja, kann man - allerdings ist es dann möglich betrag oder in deinem Fall x zu verändern.
Das hat keine Auswirkungen nach aussen aber in grossen Prozeduren ist es ungünstig, wenn man das machen kann.
 

kathrin1

Mitglied
ok dann nehme ich halt betrag.:(


jetzt mal ne andere frage mir fällt grad auf, wir haben zu übungen und so wenn wir klasen gemacht haben immer geschrieben

Java:
class Person {
int userId;
String Name;
String telNr;


aber in meinem fall hab ich ja geschrieben

Java:
private String name;
private double Kontostand;
private int Kontonummer;


könnte man die nicht alle auch weglassen?
die
Code:
private
's?



und wenn ich jetzt davor schreiben würde
Code:
public String name;
wo ist dann der unterschied zu nur String name?
könnte mir das bitte jemand erklären? hat es was mit dem zugriff und der sichtbarkeit zu tun?
 

Andi_CH

Top Contributor
JAVA TAG verwenden bitte

Grundsätzlich könnte man alles weglassen was Sicherheit bringt.

Es kann dann aber jeder von aussen ganz beliebig die Werte setzten und das willst du ja ganz sicher nicht.

private vor Variablen (ok allenfall protected) ist sozusagen Pflicht.
 
Zuletzt bearbeitet:

kathrin1

Mitglied
ja sorry ich benutzt es das nächset mal...???:L

und grundsätzlich.

gibts überhaupt einen unterschied zwischen.

Code:
public string name;

oder

Code:
string name;
?

ist ohne was davor nicht sowiso
Code:
public
?




ich muss jetzt die aufgabe noch erweitern und zwar:

"schreiben sie eine java -programm Bank, welches die zuvor geschriebene klasse konto benutzt. legen sie auf geeignete weise ein konto mit folgenden daten an:

konto - Nr: 1
Name : Corinna Muster
Kontostand: 50

zahlen sie auf dieses konto weiter 50 euro ein und geben sie den kontostand nach der einzahlung aus.."

warum eigentlich WEITERE 50 euro?????:L



ok das wird schwierig , obwohl ich das alles eigentlich schon hatte:autsch:



also fang ich mal an:

Java:
public class Bank extends Konto {
 

ARadauer

Top Contributor
welches die zuvor geschriebene klasse konto benutzt
benutzen ist nicht extends.. extends bedeutet erweitern.
eine Bank ist kein Konto.

Die Bank braucht einfach ein Member vom Typ Konto, genauso wie Konto einen Member Typ String hat (name und telnr)
 

VfL_Freak

Top Contributor
Moin,

gibts überhaupt einen unterschied zwischen.
public string name;
oder
string name; ?
ist ohne was davor nicht sowiso public?
das public steuert die Sichtbarkeit der Variable, wodurch bspw. die Zugreifbarkeit aus anderen Klassen o. ä. beeinflußt wird ...

ich muss jetzt die aufgabe noch erweitern und zwar:
"schreiben sie eine java -programm Bank, welches die zuvor geschriebene klasse konto benutzt. legen sie auf geeignete weise ein konto mit folgenden daten an:
konto - Nr: 1
Name : Corinna Muster
Kontostand: 50
zahlen sie auf dieses konto weiter 50 euro ein und geben sie den kontostand nach der einzahlung aus.."
warum eigentlich WEITERE 50 euro?????:L
Warum ???:L:eek:
Kontostand 50 EUR + 50 weitere EUR soll den neuen Kontostand von 100 EUR ergeben ..... :D


ok das wird schwierig , obwohl ich das alles eigentlich schon hatte:autsch:


also fang ich mal an:
Java:
public class Bank extends Konto {
Warum sollte die Klasse Bank von der Klasse Konto abgeleitet werden ?
Eine Ableitung (oder auch Vererbung) dient i. d. R. immer der Spezialisierung!
Beispiel: Klasse Tier - als Ableitung die Klassen Hund, Katze, Fisch etc.

gruß
Klaus
 

kathrin1

Mitglied
hmm ich weiß nicht so recht wie ich jetzt vorgehen soll...die bank erbt ja von konto

also kann ich ja jetzt zb schreiben

Java:
Bank (String name, double kontostand, int kontonummer) {

als konstruktor ..wäre das richtig?

jetzt muss doch aber noch diese 1, corinna muster und, 50 den attributen zuweisen. muss ich jetzt erst ein neues konto anlegen
objekte erzeugen?

aber das würde man doch dann eher in der main machen oder?
 

kathrin1

Mitglied
hmm stimmt eigentlich. dann hat mich das verwirrt weil da stand (..das die zuvor geschriebene klasse konto benutzt)


und warum nochmal 50..na wir haben doch bis jetzt noch gar keine eingezahlt?
 

kathrin1

Mitglied
ist es denn nicht möglich das es die attribute von konto erbt so das man die nicht neu machen musss? sondenr nur noch die objekte erzeugen und belegen?

ok dann erbt es halt nichts!!!!!!!!!!!!

ich wundere mich nur weil eine komilitonin es ebenso gemacht hat.

abschließende frage nach der aufgabe ist dann nämlich auch , "welchen sinn macht es von der klasse konto zu erben? geben sie ein bsp hierfür an"

also könnte man ja meinen es macht doch sinn?



aber gut wenn ihr meint???:L???:L???:L

edit: werde mal ein bißchen weiterübelegen wie ich die aufgabe weiter mache
 
Zuletzt bearbeitet von einem Moderator:

ARadauer

Top Contributor
Im Grunde kann es leicht sein, das dein Lehrer das falsch macht. Ein Lehrer ist auch nicht allwissend...

Es wäre sinnvoll wenn die Bank eine Liste von Konten hätte.
Aber eine Bank ist kein Konto..

das ist vererbung...
Rabe extends Vogel
Vogel extends Tier

ist es denn nicht möglich das es die attribute von konto erbt so das man die nicht neu machen musss? sondenr nur noch die objekte erzeugen und belegen?
das Bank braucht ja die Attribute von Konto gar nicht sondern ein Konto als Attribut...
 
Zuletzt bearbeitet von einem Moderator:

kathrin1

Mitglied
ja aber es braucht auch konto name , kontostand und kontonummer

und diese muss man ja so neu erstellen und wenn es geerbt hätte hätte es die doch mitbekommen ode verstehe ich das falsch?

ok wenn es nicht erbt soll es aber doch die klasse konto benutzen

ich schreibe jetzt aber eine main methode und in der werden die attribute und alles von Konto doch eh nicht gekannt oder
 
Zuletzt bearbeitet von einem Moderator:

kathrin1

Mitglied
Java:
public static void main (String [] args) {

Konto konto_cm = new Konto ("Claudia Muster, 50, 1);
bin noch nicht fertig
ist das so richtig? oder muss 50.0 heißen weil kontostand ja ein double wert ist.

jaja natürlcih muss es 50.0 heißen ...manchmal bn ich echt verpeilt
 
Zuletzt bearbeitet:
J

JohannisderKaeufer

Gast
abschließende frage nach der aufgabe ist dann nämlich auch , "welchen sinn macht es von der klasse konto zu erben? geben sie ein bsp hierfür an"


Eine Möglichkeit wäre ein Konto ohne Überziehungsmöglichkeit oder ein Girokonto mit dem man noch zusätzlich überweisen kann.
Java:
Guthabenkonto extends Konto
public double auszahlen(double betrag){
...
if(kontostand-betrag>0)
...
}

oder

Girokonto extends Konto

public void überweisen(double betrag)

Die "Standardbank" könnte auch mit diesen Spezialkonten arbeiten wie mit einem normalen Konto. Die Konten hätten aber noch die zusätzlichen Features.
 

L-ectron-X

Gesperrter Benutzer
Ein Standardkonto könnte so aussehen:
Java:
public class Konto {
  private String inhaber;
  private int kontonummer;
  private double kontostand;
  
  /**
   * Erzeugt ein Konto mit mit Standard-Werten.
   */
  public Konto() { //Standardkonstruktor
    this("unbekannt", 0, 0);
  }
  
  /**
   * Erzeugt ein Konto mit den übergebenen Werten.
   */
  public Konto(final String inhaber, final int kontonummer, final double kontostand) {
    setInhaber(inhaber);
    setKontonummer(kontonummer);
    setKontostand(kontostand);
  }

  /**
   * Setzt die Kontonummer des Kontos.
   */
  public void setKontonummer(final int kontonummer) {
    this.kontonummer = kontonummer;
  }
  
  /**
   * Gibt die Kontonummer des Kontos zurück.
   */
  public int getKontonummer() {
    return this.kontonummer;
  }
  
  /**
   * Setzt den Namen des Kontoinhabers.
   */
  public void setInhaber(final String inhaber) {
    this.inhaber = inhaber;
  }
  
  /**
   * Gibt den Namen des Kontoinhabers zurück.
   */
  public String getInhaber() {
    return this.inhaber;
  }
  
  /**
   * Setzt den Kontostand des Kontos.
   */
  public void setKontostand(final double kontostand) {
    this.kontostand = kontostand;
  }
  
  /**
   * Gibt den aktuellen Kontostand des Kontos zurück.
   */
  public double getKontostand() {
    return this.kontostand;
  }
  
  /**
   * Zahlt den übergebenen Betrag auf das Konto ein.
   */
  public void einzahlen(final double betrag) {
    this.kontostand += betrag;
  }
  
  /**
   * Zahlt den übergebenen Betrag aus.
   */
  public void auszahlen(final double betrag) {
    this.kontostand -= betrag;
  }
}

Eine einfache Bank, die mehrere Standardkonten verwaltet könnte so aussehen:
Java:
import java.util.*;

public class Bank {
  private String name;
  private Set<Konto> kontoBestand;
  
  public Bank(String name) {
    this.name = name;
    this.kontoBestand = new HashSet<Konto>();
  }
  
  private void neuesKonto(final String inhaber, final int kontonummer, final double kontostand) {
    if(sucheKonto(kontonummer) == null) {
      Konto konto = new Konto(inhaber, kontonummer, kontostand);
      this.kontoBestand.add(konto);
      System.out.println("Neues Konto mit der Nummer "+kontonummer+" bei der Bank \""+this.name+"\" angelegt!");
      System.out.println("Kontoinhaber: "+inhaber+"\tKontostand: EUR "+kontostand+"\n");
    }
    else {
      System.out.println("Fehler beim Anlegen eines Kontos:\nEin Konto mit der Nummer "+kontonummer+" existiert bereits!\n");
    }
  }
  
  private void kontoLoeschen(final int kontonummer) {
    Konto konto = sucheKonto(kontonummer);
    kontoBestand.remove(konto);
  }
  
  private Konto sucheKonto(final int kontonummer) {
    Iterator<Konto> it = this.kontoBestand.iterator();
    while(it.hasNext()) {
      Konto konto = it.next();
      if(konto.getKontonummer() == kontonummer) {
        return konto;
      }
    }
    return null; //es wurde kein Konto mit der Kontonummer gefunden
  }
  
  private void einzahlen(final int kontonummer, final double betrag) {
    Konto konto = sucheKonto(kontonummer);
    if(konto != null) {
      konto.einzahlen(betrag);
      System.out.println("Auf das Konto "+kontonummer+" wurden "+betrag+" Euro eingezahlt.");
      System.out.println("Der Kontostand betraegt nun: EUR "+konto.getKontostand()+"\n");
    }
    else {
      System.out.println("Einzahlung nicht moeglich, ein Konto mit der Kontonummer "+kontonummer+" exitsiert nicht!\n");
    }
  }
  
  private void auszahlen(final int kontonummer, final double betrag) {
    Konto konto = sucheKonto(kontonummer);
    if(konto != null) {
      if(konto.getKontostand() > betrag) {
        konto.auszahlen(betrag);
        System.out.println("Vom Konto "+kontonummer+" (Inhaber "+konto.getInhaber()+") wurden "+betrag+" Euro abgehoben.");
        System.out.println("Der Kontostand betraegt nun: EUR "+konto.getKontostand()+"\n");
      }
      else {
        System.out.println("Die Auszahlung vom Konto "+kontonummer+" (Inhaber "+konto.getInhaber()+") ist nicht möglich.\nDer auszuzahlende Betrag übersteigt das Guthaben!\n");
      }
    }
    else {
      System.out.println("Auszahlung nicht moeglich, ein Konto mit der Kontonummer "+kontonummer+" exitsiert nicht!\n");
    }
  }
  
  public static void main(String[] args) {
    Bank bank = new Bank("Fette Beute");
    bank.neuesKonto("Corinna Muster", 1, 50);
    bank.neuesKonto("Reiner Zufall", 2, 120);
    bank.neuesKonto("Rainer Zufall", 2, 120); //wird testweise eine Fehlermeldung ausgeben
    bank.einzahlen(1, 50);
    bank.auszahlen(2, 80);
    bank.auszahlen(2, 100); //wird testweise eine Fehlermeldung ausgeben
    bank.einzahlen(3, 10); //wird testweise eine Fehlermeldung ausgeben
  }
}
Das Ganze könnte noch beliebig verfeinert und ausgefeilt und sicher hier und da auch noch verbessert werden. Ich habe hier mal nur die wichtigsten Sachen eingebaut, die auch z.T. aus deiner Aufgabenstellung hervor gingen.
 
G

Gonzo17

Gast
gibts überhaupt einen unterschied zwischen.

Code:
public string name;

oder

Code:
string name;
?

ist ohne was davor nicht sowiso
Code:
public
?

Ja gibt es. Das Schlüsselwort
Code:
private
bedeutet, dass sich die Sichtbarkeit auf die Klasse beschränkt, bei
Code:
protected
ist es in allen Unterklassen und im Paket sichtbar, bei
Code:
public
überall. Schreibt man kein Schlüsselwort davor, dann beschränkt sich die Sichtbarkeit auf das Paket (keine Unterklassen wie bei
Code:
protected
!). Man nennt das dann auch
Code:
default
.
 

ARadauer

Top Contributor
Java:
public static void main (String [] args) {

Konto konto_cm = new Konto ("Claudia Muster, 50, 1);
bin noch nicht fertig
ist das so richtig? oder muss 50.0 heißen weil kontostand ja ein double wert ist.

jaja natürlcih muss es 50.0 heißen ...manchmal bn ich echt verpeilt

sagt doch mal bitte jemand was dazu
Mhn der Compiler sagt dir doch, dass das falsch ist und beim zweiten mal sieht man auch dass du die " zum schließen des Namens vergessen hast... sorry aber für sowas braucht man echt kein fachforum... bisschen mitdenken muss man schon...
 

Neue Themen


Oben