Menu
CoddyTech

Repaso: administrador de cuentas bancarias

Parte de la sección Programación orientada a objetos del Journey de GDScript de Coddy. Lección 14 de 65.

challenge icon

Desafío

Intermedio

Escribe la clase BankAccount en bank_account.gd. Reúne todo lo aprendido en este capítulo.

  • Una variable int estática interest_percent que empieza en 2 y es compartida por todas las cuentas
  • Dos propiedades privadas: _owner_name (un String) y _balance (un int que empieza en 0)
  • Una propiedad de solo lectura owner_name cuyo getter devuelve _owner_name
  • Una propiedad balance cuyo getter devuelve _balance y cuyo setter imprime Balance cannot be negative si el valor es negativo; de lo contrario, almacena el valor en _balance
  • El constructor _init(account_owner, start_balance) almacena el propietario y asigna start_balance a balance, para que el setter lo compruebe

Y estos métodos:

  • deposit(amount): imprime Deposit amount must be positive y devuelve false cuando amount es 0 o menos; de lo contrario, lo suma y devuelve true
  • withdraw(amount): imprime Withdrawal amount must be positive y devuelve false cuando amount es 0 o menos; imprime Insufficient funds y devuelve false cuando es mayor que el saldo; de lo contrario, lo resta y devuelve true
  • apply_interest(): suma _balance * interest_percent / 100 (dólares enteros) al saldo y devuelve ese interés
  • display_info(): imprime tres líneas: Account Owner: NAME, Balance: $BALANCE e Interest Rate: PERCENT%

El código proporcionado lee owner start_balance, cuántos comandos siguen y los comandos deposit N, withdraw N, set N (asigna balance), interest, rate N (establece BankAccount.interest_percent) e info. Imprime una línea por cada depósito, retiro y pago de intereses exitosos, y el saldo del propietario al final. Para Coddy 1000 y los comandos deposit 500, withdraw 200, interest, info, set 5000 y withdraw 10000, imprime:

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

Escribe tu código en bank_account.gd. main.gd contiene el código de entrada y salida proporcionado y no se puede editar.

Pruébalo tú mismo

extends Node

func _ready():
	# Código de entrada/salida proporcionado: mantenlo tal como está
	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])

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Compilador de GDScript online