Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Erste SchritteKonto darf nicht überzogen werden...
Ich weiß irgendwie gerade nicht, wie ich umsetzten soll, dass das Konto nicht überzogen werden darf.
Könntet ihr mir das kurz sagen. Ansonsten dürfte die Datei funktionieren...
Vielen Dank!
Java:
public class Konto {
String kontoinhaber;
int kontonummer;
double kontostand;
public Konto(String kontoinhaber, int kontonummer){
this.kontoinhaber=kontoinhaber;
this.kontonummer=kontonummer;
kontostand=0.00;
}
public void abheben(double x){
kontostand=kontostand-x;
}
public void einzahlen(double x){
kontostand=kontostand+x;
}
public String toString(){
String result = "Name des Kontoinhabers: "+kontoinhaber+" Kontonummer: "+kontonummer+" Kontostand: "+kontostand;
return result;
}
}
Was soll den passieren wenn wenn mehr abgehoben wird als Geld auf dem Konto ist? Soll der Kontostand einfach nur auf 0 gesetzt werden? Soll eine Exception geschmissen werden? ...........
Hab jetzt aber zur gleichen Aufgabe noch ein Problem. Also nochmal die Aufgabenstellung:
In dieser Aufgabe implementieren Sie Bankkonten. Das Programm besteht aus Unter- klassen GiroKonto
und SparKonto, die von einer Oberklasse Konto erben.
Unteraufgabe 1
Implementieren Sie ein Klasse Konto, die Bankkonten repräsentiert. Ein Bankkonto be- sitzt die folgenden
Attribute:
• Name des Kontoinhabers
• Kontonummer
• Kontostand
Der Zugriff auf die Attribute muss außerhalb der Klasse möglich sein. Außerdem verfügt ein Bankkonto
über folgendes Verhalten:
• Einen parametrisierten Konstruktor zur Initialisierung des Inhabers und der Kon- tonummer. Der
Kontostand wird mit 0 initialisiert.
• Je eine Methode, die das Einzahlen und Abheben eines positiven Betrags realisie- ren. Das Konto
darf nicht überzogen werden.
• Eine Methode public String toString(), die alle Informationen über das Bank- konto zurückliefert.
Meine Datei:
Java:
public class Konto {
String kontoinhaber;
int kontonummer;
double kontostand;
public Konto(String kontoinhaber, int kontonummer, double kontostand){
this.kontoinhaber=kontoinhaber;
this.kontonummer=kontonummer;
kontostand=0.00;
}
public void abheben(double x){
if(x <= kontostand)
kontostand=kontostand-x;
}
public void einzahlen(double x){
kontostand=kontostand+x;
}
public String toString(){
String result = "Name des Kontoinhabers: "+kontoinhaber+", Kontonummer: "+kontonummer+", Kontostand: "+kontostand+" Euro";
return result;
}
}
Unteraufgabe 2
Implementieren Sie ein Klasse GiroKonto, die alle Eigenschaften und Methoden von der Klasse Konto
erbt. Ein Girokonto besitzt zusätzlich ein Attribut dispo für den Dispositionskredit. Stellen Sie sicher,
dass
• auf das Attribut dispo nur innerhalb der Klasse zugegriffen werden kann,
• das Attribut dispo stets kleiner oder gleich 0 ist,
• das Attribut dispo unmittelbar nach Initialisierung den Wert 0 besitzt,
• beim Abheben der durch dispo festgelegte Verfügungsrahmen nicht übeschritten wird. Überschreiben
Sie die entsprechende Methode der Klasse Konto.
Außerdem verfügt ein Girokonto über folgendes Verhalten:
• Eine Methode, die das Überweisen eines positiven Betrags auf ein anderes Konto realisiert.
• Eine Getter/Setter-Methode für das Attribut dispo.
• Eine Methode public String toString(), die alle Informationen über das Giro- konto zurückliefert.
Diese Methode ruft die gleichnamige Methode der Oberklasse auf.
Meine Datei
Java:
public class Girokonto extends Konto {
private double dispo=0.00;
public Girokonto(String kontoinhaber, int kontonummer, double kontostand){
super(kontoinhaber, kontonummer, kontostand);
}
public void überweisen(double y){
if(y <= kontostand+dispo)
kontostand=kontostand-y;
}
double getDispo(){
return this.dispo;
}
void setDispo(double dispo){
this.dispo=dispo;
}
public String toString(){
String result = super.toString()+" und der Dipo betraegt: "+dispo+" Euro. ";
return result;
}
}
Unteraufgabe 3
Implementieren Sie ein Klasse SparKonto, die alle Eigenschaften und Methoden von der Klasse Konto
erbt. Ein Sparkonto besitzt zusätzlich ein Attribut zinssatz. Stellen Sie sicher, dass
• auf das Attribut zinssatz nur innerhalb der Klasse zugegriffen werden kann,
• das Attribut zinssatz stets Werte aus dem Intervall [0, 1] annehmen darf und unmittelbar nach
Initialisierung den Wert 0.05 besitzt.
Außerdem verfügt ein Sparkonto über folgendes Verhalten:
• Eine Methode, die das Verzinsen des Sparguthabens gemäß der folgenden Formel realisiert:
kneu = (1 + p)kalt
wobei p der Zinssatz, kalt der aktuelle und kneu der neue Kontostand ist.
• Eine Getter/Setter-Methode für das Attribut zinssatz.
• Eine Methode public String toString(), die alle Informationen über das Spar- konto zurückliefert.
Diese Methode ruft die gleichnamige Methode der Oberklasse auf.
Meine Datei
Java:
public class SparKonto extends Konto {
private double zinssatz=0.05;
public SparKonto(String kontoinhaber, int kontonummer, double kontostand){
super(kontoinhaber, kontonummer, kontostand);
}
public void verzinsen(double kontostand){
if (zinssatz <= 1.0 && zinssatz >= 0.0)
kontostand=(1+zinssatz)*kontostand;
}
double getZinssatz(){
return this.zinssatz;
}
void setZinssatz(double zinssatz){
this.zinssatz=zinssatz;
}
public String toString(){
String result = super.toString()+" und der Zinssatz betraegt: "+zinssatz+". ";
return result;
}
}
Unteraufgabe 4
Implementieren Sie ein Klasse TestKonto. Die Klasse besteht aus einer main-Methode, die folgendes
Szenario realisiert:
• Erzeugen Sie einen Array, der mindestens 2 Giro- und 2 Sparkonten enthält.
• Rufen Sie jede Methode von Girokonto und Sparkonto mindestens einmal auf.
Meine Datei
Java:
public class TestKonto {
public static void main (String [] args){
Konto[] konten=new Konto[4];
konten[0]=new Girokonto("Max Mustermann",123456789,19.99);
konten[1]=new Girokonto("Mia Mustermann",234567891,19999.95);
konten[2]=new SparKonto("Lena Maier",345678912,50000.00);
konten[3]=new SparKonto("Peter Maier",456789123,20000.00);
for (int i = 0 ; i <= 3; i++){
konten[i].abheben(20.0);
konten[i].einzahlen(30.0);
if(konten[i] instanceof Girokonto) {
Girokonto a = (Girokonto) konten[i];
a.überweisen(25.0);
a.setDispo(2000.0);
System.out.print(a.toString());
}
else if(konten[i] instanceof SparKonto) {
SparKonto b = (SparKonto) konten[i];
b.setZinssatz(0.06);
b.verzinsen(3000.0);
System.out.print(b.toString());
}
}
}
}
So, das Problem ist nun aber, dass ich falsche Werte für den Kontostand erhalte. Ich versteh aber nicht, warum das so ist.
Der Code, der rauskommt, lautet:
Name des Kontoinhabers: Max Mustermann, Kontonummer: 123456789, Kontostand: 5.0
Euro und der Dipo betraegt: 2000.0 Euro. Name des Kontoinhabers: Mia Mustermann,
Kontonummer: 234567891, Kontostand: 5.0 Euro und der Dipo betraegt: 2000.0 Euro
. Name des Kontoinhabers: Lena Maier, Kontonummer: 345678912, Kontostand: 30.0 E
uro und der Zinssatz betraegt: 0.06. Name des Kontoinhabers: Peter Maier, Konton
ummer: 456789123, Kontostand: 30.0 Euro und der Zinssatz betraegt: 0.06.
Der Zugriff auf die Attribute muss außerhalb der Klasse möglich sein. Außerdem verfügt ein Bankkonto
über folgendes Verhalten:
• Einen parametrisierten Konstruktor zur Initialisierung des Inhabers und der Kon- tonummer. Der
Kontostand wird mit 0 initialisiert.
- Getter Methoden fehlen noch
- Parameter 'kontostand' im Konstruktor wird nicht benötigt da dieser beim anlegen immer 0 ist
[JAVA=6]
public Konto(String kontoinhaber, int kontonummer, double kontostand){
[/code]
[JAVA=9]
kontostand=0.00;
[/code]
• das Attribut dispo stets kleiner oder gleich 0 ist,
• beim Abheben der durch dispo festgelegte Verfügungsrahmen nicht übeschritten wird. Überschreiben
Sie die entsprechende Methode der Klasse Konto.
• Eine Methode, die das Verzinsen des Sparguthabens gemäß der folgenden Formel realisiert:
kneu = (1 + p)kalt
wobei p der Zinssatz, kalt der aktuelle und kneu der neue Kontostand ist.
• Eine Getter/Setter-Methode für das Attribut zinssatz.