Podsumowanie — menedżer kont bankowych
Część sekcji Programowanie obiektowe ścieżki GDScript w Coddy. Lekcja 14 z 65.
Wyzwanie
ŚredniNapisz klasę BankAccount w pliku bank_account.gd. Łączy ona w sobie wszystko z tego rozdziału.
- Statyczna zmienna typu
into nazwieinterest_percent, która zaczyna od wartości2i jest współdzielona przez wszystkie konta - Dwie prywatne właściwości:
_owner_name(typuString) i_balance(typuint, zaczyna od wartości0) - Właściwość tylko do odczytu
owner_name, której getter zwraca_owner_name - Właściwość
balance, której getter zwraca_balance, a setter wypisujeBalance cannot be negativedla wartości ujemnej, a w przeciwnym razie zapisuje wartość w_balance - Konstruktor
_init(account_owner, start_balance)zapisuje właściciela i przypisujestart_balancedobalance, aby setter mógł to sprawdzić
Oraz następujące metody:
deposit(amount): wypisujeDeposit amount must be positivei zwracafalse, gdyamountwynosi0lub mniej; w przeciwnym razie dodaje tę kwotę i zwracatruewithdraw(amount): wypisujeWithdrawal amount must be positivei zwracafalse, gdyamountwynosi0lub mniej; wypisujeInsufficient fundsi zwracafalse, gdy kwota jest większa niż saldo; w przeciwnym razie odejmuje tę kwotę i zwracatrueapply_interest(): dodaje do salda_balance * interest_percent / 100(w całych dolarach) i zwraca naliczone odsetkidisplay_info(): wypisuje trzy wiersze:Account Owner: NAME,Balance: $BALANCEiInterest Rate: PERCENT%
Dostarczony kod odczytuje owner start_balance, liczbę następujących po nich poleceń oraz polecenia deposit N, withdraw N, set N (przypisuje wartość do balance), interest, rate N (ustawia BankAccount.interest_percent) i info. Wypisuje wiersz dla każdej udanej wpłaty, wypłaty i płatności odsetek, a na końcu saldo właściciela. Dla Coddy 1000 i poleceń deposit 500, withdraw 200, interest, info, set 5000 i withdraw 10000 wypisuje:
Deposited $500
Withdrew $200
Interest earned: $26
Account Owner: Coddy
Balance: $1326
Interest Rate: 2%
Insufficient funds
Coddy has $5000Twój kod umieść w pliku bank_account.gd. Plik main.gd zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
extends Node
func _ready():
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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])
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrzneWprowadzenie do programowania obiektowegoKlasy a obiektySłowo kluczowe selfMetodyWłaściwościKonstruktor (_init)Powtórka – prosty kalkulator4Polimorfizm
Ponowne omówienie przesłaniania metodDuck typingKlasy i metody abstrakcyjneProjektowanie interfejsówPowtórzenie – kalkulator kształtów7Sygnały
Czym jest sygnał?Deklarowanie i emitowanieŁączenie z sygnałamiSygnały z argumentamiPodsumowanie — system zdrowia10Wzorce projektowe, część 2
Wzorzec poleceniaWzorzec adapteraWzorzec dekoratoraWzorzec metody szablonowejWzorzec stanuWzorzec kompozytu2Właściwości klas
Zmienne instancji a zmienne statyczneFunkcje statyczneSettery właściwościGettery właściwościPrywatne z konwencjiPodsumowanie — menedżer kont bankowych5Enkapsulacja
Elementy publiczne i prywatneWalidacja za pomocą setterówUkrywanie informacjiWłaściwości tylko do odczytuPodsumowanie – system ewidencji uczniów8Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieKlasy wewnętrzneWęzły jako komponentyRefCounted a NodeTypy wyliczeniowe w klasach11Projekt: Zarządzanie biblioteką
Przegląd projektuKlasy książki i użytkownika3Dziedziczenie
Podstawy dziedziczeniaSłowo kluczowe superNadpisywanie metodŁańcuchy dziedziczeniaSprawdzanie typów za pomocą isPodsumowanie – hierarchia pracowników6Metody specjalne
Wprowadzenie do metod wirtualnychMetoda _to_stringWłasne iteratoryPodsumowanie — własna lista9Wzorce projektowe — część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec StrategyPoćwicz samodzielnie: Kompilator GDScript online