Hallo,
ich habe folgende Aufgabe, bei der ich im Moment nicht weiterkomme. Ich wäre über ein paar Ratschläge dankbar.
ich habe folgende Aufgabe, bei der ich im Moment nicht weiterkomme. Ich wäre über ein paar Ratschläge dankbar.
Java:
// Klasse: Konto.
class Account {
// Private Klassenvariable:
// Naechste zu vergebende Kontonummer.
private static int nextNumber = 1;
// Private Objektvariablen:
private final int number = nextNumber++;
// Kontonummer (unveraenderlich).
private String holder; // Kontoinhaber.
private int balance = 0; // Kontostand.
// Oeffentliche Konstruktoren: Konto mit Inhaber h, ggf.
// Anfangsbetrag b und eindeutiger Nummer konstruieren.
public Account (String h) {
holder = h;
}
public Account (String h, int b) {
this(h); // Den anderen Konstruktor aufrufen.
balance = b;
}
// Oeffentliche Objektmethoden:
// Kontonummer/-inhaber/-stand abfragen.
public int number () { return number; }
public String holder () { return holder; }
public int balance () { return balance; }
// Oeffentliche Objektmethoden:
// Betrag amount einzahlen/abheben/überweisen.
public void deposit (int amount) {
balance += amount;
}
public void withdraw (int amount) {
balance -= amount;
}
public void transfer (int amount, Account that) {
withdraw(amount);
that.deposit(amount);
}
// Oeffentliche Klassenmethode:
// Anzahl bereits erzeugter Konten abfragen.
public static int numberOfAccounts () { return nextNumber - 1; }
}
Java:
// Unterklasse von Account: Limitiertes Konto.
class LimitedAccount extends Account {
// Zusaetzliche Objektvariable:
private int limit; // Kreditlinie in Cent.
// Konstruktoren:
// Limitiertes Konto mit Inhaber h, ggf. Anfangsbetrag b,
// Kreditlinie l und eindeutiger Nummer konstruieren.
public LimitedAccount (String h, int b, int l) {
super(h, b); // Konstruktor der Oberklasse Account aufrufen,
// um deren Objektvariablen zu initialisieren.
limit = l; // Zusaetzliche Objektvariable limit initialisieren.
}
public LimitedAccount (String h, int l) {
// Entweder: // Oder:
super(h); // this(h, 0, l);
limit = l; //
}
// Zusaetzliche Objektmethode: Kreditlinie abfragen.
public int limit () { return limit; }
// Hilfsmethode: Kann Betrag amount abgezogen werden,
// ohne die Kreditlinie zu ueberschreiten?
private boolean check (int amount) {
if (balance() - amount >= -limit) return true;
System.out.println("Unzulaessige Kontoueberziehung!");
return false;
}
// Ueberschreiben geerbter Objektmethoden:
// Betrag amount abheben/ueberweisen.
public void withdraw (int amount) {
if (check(amount)) {
// Ueberschriebene Methode aufrufen.
super.withdraw(amount);
}
}
public void transfer (int amount, Account that) {
if (check(amount)) {
// Ueberschriebene Methode aufrufen.
super.transfer(amount, that);
}
}
}
Java:
public class ChargedAccount extends Account {
private int count;
public int charge=10;
public ChargedAccount(String holder){
super(holder);
}
public ChargedAccount(String holder, int balance){
super(holder,balance);
}
public void deposit (int amount) {
super.deposit(amount);
count++;
}
public void withdraw (int amount) {
super.withdraw(amount);
count++;
}
public void charge(){
// ......
}
}