Wiederholung – Bankkonto
Teil des Abschnitts Objektorientierte Programmierung der Kotlin-Journey von Coddy. Lektion 11 von 57.
Aufgabe
MittelVervollständige die Klasse BankAccount(val owner: String, opening: Int). Ihr init-Block verlangt einen nicht leeren Besitzer (owner is empty) und eine nicht negative Ersteinlage (opening must not be negative). balance hat einen privaten Setter. Transaktionen werden in einer privaten MutableList gespeichert und als val transactions: List<String> bereitgestellt. deposit(amount) und withdraw(amount) geben bei Erfolg true zurück: Beträge unter 1 werden abgelehnt, und eine Auszahlung, die größer als das Guthaben ist, wird abgelehnt; erfolgreiche Änderungen werden als +50 oder -20 aufgezeichnet. statement() gibt Ada: 30 (+50, -20) oder Ada: 0 (no transactions) zurück.
Der bereitgestellte Code liest den Besitzer und die Ersteinlage (name,amount) und anschließend die Befehle d n oder w n. Für fehlgeschlagene Befehle gibt er refused aus und anschließend die Kontoinformation; bei einem ungültigen Konto wird die Fehlermeldung ausgegeben.
Dein Code gehört in BankAccount.kt. Main.kt enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
fun main() {
// Gelieferter Ein-/Ausgabecode: belasse ihn wie er ist
val input = generateSequence(::readLine).toList()
try {
val (name, amount) = input[0].split(",")
val account = BankAccount(name, amount.toInt())
for (cmd in input.drop(1)) {
val (op, n) = cmd.split(" ")
val ok = if (op == "d") account.deposit(n.toInt()) else account.withdraw(n.toInt())
if (!ok) println("refused")
}
println(account.statement())
} catch (e: IllegalArgumentException) {
println(e.message)
}
}
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenPrimärkonstruktoreninit-Blöcke und ValidierungSekundärkonstruktorenRückblick – Bibliotheksausweis4Vererbung
Offene Klassen und UnterklassenÜberschreiben von Membernsuper und KonstruktorenAbstrakte KlassenRückblick – Mitarbeiterverzeichnis2Eigenschaften und Kapselung
Benutzerdefinierte ZugriffsmethodenSichtbarkeitsmodifikatorenPrivate Setterlazy und lateinitWiederholung – Bankkonto5Schnittstellen
Schnittstellen deklarierenStandardmethodenMehrere SchnittstellenSchnittstellen als TypenRückblick – Zahlungsmethoden8Generics
Generische FunktionenGenerische KlassenTypbeschränkungenVarianz mit in und outRückblick – Prioritätswarteschlange11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihenÜbe selbstständig: Kotlin-Playground