Menu
CoddyTech

Recapitulando: Gerenciador de Conta Bancária

Parte da seção Programação orientada a objetos do Journey de GDScript da Coddy. Lição 14 de 65.

challenge icon

Desafio

Médio

Escreva a classe BankAccount em bank_account.gd. Ela reúne tudo o que foi apresentado neste capítulo.

  • Uma variável int estática interest_percent que começa em 2 e é compartilhada por todas as contas
  • duas propriedades privadas: _owner_name (uma String) e _balance (um int que começa em 0)
  • Uma propriedade somente leitura owner_name cujo getter retorna _owner_name
  • Uma propriedade balance cujo getter retorna _balance e cujo setter exibe Balance cannot be negative para um valor negativo e, caso contrário, armazena o valor em _balance
  • O construtor _init(account_owner, start_balance) armazena o titular e atribui start_balance a balance, para que o setter faça a verificação

E estes métodos:

  • deposit(amount): exibe Deposit amount must be positive e retorna false quando amount é 0 ou menor; caso contrário, adiciona o valor e retorna true
  • withdraw(amount): exibe Withdrawal amount must be positive e retorna false quando amount é 0 ou menor; exibe Insufficient funds e retorna false quando ele é maior que o saldo; caso contrário, subtrai o valor e retorna true
  • apply_interest(): adiciona _balance * interest_percent / 100 (em dólares inteiros) ao saldo e retorna esse valor de juros
  • display_info(): exibe três linhas: Account Owner: NAME, Balance: $BALANCE e Interest Rate: PERCENT%

O código fornecido lê owner start_balance, a quantidade de comandos seguintes e os comandos deposit N, withdraw N, set N (atribui a balance), interest, rate N (define BankAccount.interest_percent) e info. Ele exibe uma linha para cada depósito, saque e pagamento de juros bem-sucedido, além do saldo do titular no final. Para Coddy 1000 e os comandos deposit 500, withdraw 200, interest, info, set 5000 e withdraw 10000, ele exibe:

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

Seu código deve ficar em bank_account.gd. main.gd contém o código fornecido de entrada/saída e não pode ser editado.

Experimente você mesmo

extends Node

func _ready():
	# Código de entrada/saída fornecido: mantenha-o 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 as lições de Programação orientada a objetos

Pratique por conta própria: Compilador de GDScript online