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.
Desafío
IntermedioEscribe la clase BankAccount en bank_account.gd. Reúne todo lo aprendido en este capítulo.
- Una variable
intestáticainterest_percentque empieza en2y es compartida por todas las cuentas - Dos propiedades privadas:
_owner_name(unString) y_balance(unintque empieza en0) - Una propiedad de solo lectura
owner_namecuyo getter devuelve_owner_name - Una propiedad
balancecuyo getter devuelve_balancey cuyo setter imprimeBalance cannot be negativesi el valor es negativo; de lo contrario, almacena el valor en_balance - El constructor
_init(account_owner, start_balance)almacena el propietario y asignastart_balanceabalance, para que el setter lo compruebe
Y estos métodos:
deposit(amount): imprimeDeposit amount must be positivey devuelvefalsecuandoamountes0o menos; de lo contrario, lo suma y devuelvetruewithdraw(amount): imprimeWithdrawal amount must be positivey devuelvefalsecuandoamountes0o menos; imprimeInsufficient fundsy devuelvefalsecuando es mayor que el saldo; de lo contrario, lo resta y devuelvetrueapply_interest(): suma_balance * interest_percent / 100(dólares enteros) al saldo y devuelve ese interésdisplay_info(): imprime tres líneas:Account Owner: NAME,Balance: $BALANCEeInterest 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 $5000Escribe 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
1Fundamentos de la programación orientada a objetos
Archivos externosIntroducción a la programación orientada a objetosClases vs. objetosLa palabra clave selfMétodosPropiedadesConstructor (_init)Repaso: calculadora sencilla4Polimorfismo
Repaso de la sobrescritura de métodosTipado patoClases y métodos abstractosDiseño de interfacesRepaso: calculadora de formas7Señales
¿Qué es una señal?Declarar y emitirConectarse a las señalesSeñales con argumentosRepaso: sistema de salud10Patrones de diseño, parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón Composite2Propiedades de clase
Variables de instancia y estáticasFunciones estáticasMétodos setter de propiedadesMétodos getter de propiedadesPrivado por convenciónRepaso: administrador de cuentas bancarias5Encapsulación
Miembros públicos y privadosValidación con settersOcultación de informaciónPropiedades de solo lecturaRepaso: sistema de registros de estudiantes8Conceptos avanzados de POO
Composición frente a herenciaClases internasNodos como componentesRefCounted frente a NodeEnums en clases3Herencia
Herencia básicaLa palabra clave superSobrescritura de métodosCadenas de herenciaComprobaciones de tipo con isRepaso: jerarquía de empleados6Métodos especiales
Introducción a los métodos virtualesEl método _to_stringIteradores personalizadosRepaso: lista personalizada9Patrones de diseño, parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón StrategyPractica por tu cuenta: Compilador de GDScript online