Menu
CoddyTech

Récapitulatif - Gestionnaire de comptes bancaires

Fait partie de la section Programmation orientée objet du Journey GDScript de Coddy. Leçon 14 sur 65.

challenge icon

Défi

Moyen

Écris la classe BankAccount dans bank_account.gd. Elle rassemble tout ce que tu as appris dans ce chapitre.

  • Une variable int statique interest_percent qui commence à 2, partagée par tous les comptes
  • Deux propriétés privées : _owner_name (une String) et _balance (un int qui commence à 0)
  • Une propriété en lecture seule owner_name dont le getter renvoie _owner_name
  • Une propriété balance dont le getter renvoie _balance et dont le setter affiche Balance cannot be negative pour une valeur négative et stocke sinon la valeur dans _balance
  • Le constructeur _init(account_owner, start_balance) enregistre le propriétaire et attribue start_balance à balance, afin que le setter la vérifie

Et les méthodes suivantes :

  • deposit(amount) : affiche Deposit amount must be positive et renvoie false lorsque amount est inférieur ou égal à 0 ; sinon, ajoute cette somme et renvoie true
  • withdraw(amount) : affiche Withdrawal amount must be positive et renvoie false lorsque amount est inférieur ou égal à 0, affiche Insufficient funds et renvoie false lorsqu’il est supérieur au solde ; sinon, soustrait cette somme et renvoie true
  • apply_interest() : ajoute _balance * interest_percent / 100 (en dollars entiers) au solde et renvoie les intérêts
  • display_info() : affiche trois lignes : Account Owner: NAME, Balance: $BALANCE et Interest Rate: PERCENT%

Le code fourni lit owner start_balance, le nombre de commandes qui suivent, ainsi que les commandes deposit N, withdraw N, set N (attribue une valeur à balance), interest, rate N (définit BankAccount.interest_percent) et info. Il affiche une ligne pour chaque dépôt, retrait et paiement d’intérêts réussi, ainsi que le solde du propriétaire à la fin. Pour Coddy 1000 et les commandes deposit 500, withdraw 200, interest, info, set 5000 et withdraw 10000, il affiche :

Deposited $500
Withdrew $200
Interest earned: $26
Account Owner: Coddy
Balance: $1326
Interest Rate: 2%
Insufficient funds
Coddy has $5000

Ton code doit être placé dans bank_account.gd. main.gd contient le code fourni pour les entrées et sorties et ne peut pas être modifié.

Essayez vous-même

extends Node

func _ready():
	# Code d'entrée/sortie fourni : gardez-le tel quel
	var first := OS.read_string_from_stdin().split(" ")
	var account := BankAccount.new(first[0], int(first[1]))
	var count := int(OS.read_string_from_stdin())
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ")
		match parts[0]:
			"deposit":
				if account.deposit(int(parts[1])):
					print("Deposited $%s" % parts[1])
			"withdraw":
				if account.withdraw(int(parts[1])):
					print("Withdrew $%s" % parts[1])
			"set":
				account.balance = int(parts[1])
			"interest":
				print("Interest earned: $%d" % account.apply_interest())
			"rate":
				BankAccount.interest_percent = int(parts[1])
			"info":
				account.display_info()
	print("%s has $%d" % [account.owner_name, account.balance])

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Compilateur GDScript en ligne