Récapitulatif - Compte bancaire
Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 11 sur 57.
Défi
MoyenComplé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
1Classes et objets
Travailler avec des fichiersDéfinir des classesConstructeurs primairesBlocs init et validationConstructeurs secondairesRécapitulatif - Carte de bibliothèque4Héritage
Classes ouvertes et sous-classesRedéfinition des membressuper et constructeursClasses abstraitesRécapitulatif – Annuaire du personnel2Propriétés et encapsulation
Accesseurs personnalisésModificateurs de visibilitéSetters privéslazy et lateinitRécapitulatif - Compte bancaire5Interfaces
Déclarer des interfacesMéthodes par défautInterfaces multiplesInterfaces en tant que typesRécapitulatif - Méthodes de paiement8Génériques
Fonctions génériquesClasses génériquesContraintes de typeVariance avec in et outRécapitulatif - File de priorité11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livresEntraînez-vous par vous-même : Playground Kotlin