Riepilogo - Gestore di conti bancari
Fa parte della sezione Programmazione orientata agli oggetti del percorso GDScript di Coddy. Lezione 14 di 65.
Sfida
MedioScrivi la classe BankAccount in bank_account.gd. Riunisce tutto ciò che hai imparato in questo capitolo.
- Una variabile
intstaticainterest_percentche inizia da2, condivisa da tutti i conti - Due proprietà private:
_owner_name(unaString) e_balance(unintche inizia da0) - Una proprietà di sola lettura
owner_nameil cui getter restituisce_owner_name - Una proprietà
balanceil cui getter restituisce_balancee il cui setter stampaBalance cannot be negativeper un valore negativo e altrimenti memorizza il valore in_balance - Il costruttore
_init(account_owner, start_balance)memorizza il titolare e assegnastart_balanceabalance, così il setter lo controlla
E questi metodi:
deposit(amount): stampaDeposit amount must be positivee restituiscefalsequandoamountè0o inferiore; altrimenti lo aggiunge e restituiscetruewithdraw(amount): stampaWithdrawal amount must be positivee restituiscefalsequandoamountè0o inferiore; stampaInsufficient fundse restituiscefalsequando è maggiore del saldo; altrimenti lo sottrae e restituiscetrueapply_interest(): aggiunge_balance * interest_percent / 100(in dollari interi) al saldo e restituisce gli interessidisplay_info(): stampa tre righe,Account Owner: NAME,Balance: $BALANCEeInterest Rate: PERCENT%
Il codice fornito legge owner start_balance, il numero di comandi successivi e i comandi deposit N, withdraw N, set N (assegna balance), interest, rate N (imposta BankAccount.interest_percent) e info. Stampa una riga per ogni deposito, prelievo e pagamento di interessi riuscito, e il saldo del titolare alla fine. Per Coddy 1000 e i comandi deposit 500, withdraw 200, interest, info, set 5000 e withdraw 10000 stampa:
Deposited $500
Withdrew $200
Interest earned: $26
Account Owner: Coddy
Balance: $1326
Interest Rate: 2%
Insufficient funds
Coddy has $5000Inserisci il tuo codice in bank_account.gd. main.gd contiene il codice fornito per l'input/output e non può essere modificato.
Provalo tu
extends Node
func _ready():
# Codice di input/output fornito: lascialo così com'è
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])
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniIntroduzione alla programmazione orientata agli oggettiClassi e oggetti a confrontoLa parola chiave selfMetodiProprietàCostruttore (_init)Riepilogo - Calcolatrice semplice4Polimorfismo
Ripasso dell'override dei metodiDuck typingClassi e metodi astrattiProgettazione delle interfacceRiepilogo - Calcolatore di forme7Segnali
Che cos'è un segnale?Dichiarare ed emettereCollegarsi ai segnaliSegnali con argomentiRipasso - Sistema della salute10Pattern di progettazione, parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern Composite2Proprietà delle classi
Variabili di istanza e staticheFunzioni staticheSetter delle proprietàGetter delle proprietàPrivato per convenzioneRiepilogo - Gestore di conti bancari5Incapsulamento
Membri pubblici e privatiValidazione con i setterNascondimento delle informazioniProprietà di sola letturaRiepilogo - Sistema di gestione dei dati degli studenti8Concetti avanzati di OOP
Composizione vs ereditarietàClassi interneNodi come componentiRefCounted vs NodeEnum nelle classi11Progetto: Gestione della biblioteca
Panoramica del progettoClassi Libro e Utente3Ereditarietà
Ereditarietà di baseLa parola chiave superOverride dei metodiCatene di ereditarietàControlli di tipo con isRipasso - Gerarchia dei dipendenti6Metodi speciali
Introduzione ai metodi virtualiIl metodo _to_stringIteratori personalizzatiRiepilogo - Lista personalizzata9Modelli di progettazione, parte 1
Introduzione ai modelli di progettazionePattern SingletonPattern FactoryPattern ObserverPattern StrategyEsercitati da solo: Compilatore GDScript online