Menu
Coddy logo textTech

Récapitulatif - Compte bancaire

Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 11 sur 57.

challenge icon

Défi

Moyen

Complétez la classe BankAccount(val owner: String, opening: Int). Son bloc init exige un propriétaire non vide (owner is empty) et un dépôt initial non négatif (opening must not be negative). balance possède un setter privé. Les transactions sont conservées dans une MutableList privée et exposées sous la forme de val transactions: List<String>. deposit(amount) et withdraw(amount) renvoient true en cas de réussite : les montants inférieurs à 1 sont refusés, et un retrait supérieur au solde est refusé ; les modifications réussies sont enregistrées sous la forme de +50 ou -20. statement() renvoie Ada: 30 (+50, -20) ou Ada: 0 (no transactions).

Le code fourni lit le propriétaire et le dépôt initial (name,amount), puis les commandes d n ou w n. Il affiche refused pour les commandes échouées, puis l'état du compte ; pour un compte invalide, il affiche le message d'erreur.

Votre code doit être placé dans BankAccount.kt. Main.kt contient le code d'entrée/sortie fourni et ne peut pas être modifié.

Essayez vous-même

fun main() {
    // Code d'entrée/sortie fourni : le laisser tel quel
    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)
    }
}

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Playground Kotlin