Programmieren informatik?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du könntest das abheben generalisieren, indem zu immer eine abstrakte check-Methode aufrufst, die aber jedes Kontotyp selber implementieren muss:

public abstract class Konto {
    // ...
    public abstract boolean abhebenCheck(int euro);
    public boolean geldAbheben(int euro) {
        if (abhebenCheck(euro)) {
            this.euro -= euro;
            return true;
        } else {
            return false;
        }
    }
}
public class GiroKonto extends Konto {
    // ...
    @Override
    public boolean abhebenCheck(int euro) {
        // in späteren Versionen vielleicht tagelimits
        // oder ähnliches?
        return true;
    }
}
public class SparKonto extends Konto {
    private int limit = ...;
    // ...
    @Override
    public boolean abhebenCheck(int euro) {
        return euro < limit;
    }
}
Woher ich das weiß:Hobby
pingu214 
Fragesteller
 27.08.2022, 00:02

Danke das hört sich gut an! :)

0

Wie wäre es mit einer Klasse "Konto" und dann einer sub-Klasse "Girokonto" und "Sparkonto".

Dann machst du jeweils eine membervariable bool für Limit, ja oder nein. Falls ja, kannst du noch eine weitere nehmen die das Limit beschreibt.

Und für das abheben überprüfst du einfach erstmal nach einem Limit, und dann ob das Limit bereits überschritten whrde oder so.

pingu214 
Fragesteller
 26.08.2022, 23:25

Das ist eine sehr gute Idee, danke! :)

0
malte314  26.08.2022, 23:50

Eine mehr oo Herangehensweise wäre es, eine abstrakte Methode `boolean abhebenCheck` in der Superklasse zu definieren, die beim Abheben immer aufgerufen wird. In der Implementierung kann man dann entweder immer `true` zurückgeben, oder anderweitige checks durchführen und im anderen Fall ein Limit checken, dass dann aber nur in der Subklasse existieren muss. Das nimmt das ungenutzte Feld `limit` weg in Fällen, wenn `limitExistiert = false`.

0
Valentin1720653  26.08.2022, 23:53
@malte314

Das dachte ich mir auch, nur die Frage ist ja schon etwas "simpler" gestellt, ich weiß nicht ob der Fragesteller etwas mit Abstrakten Methoden bzw. Interfaces anfangen kann.

0