Pobieranie salda
Część sekcji Programowanie obiektowe ścieżki Lua w Coddy. Lekcja 22 z 70.
Wyzwanie
ŁatwyTwój Cyfrowy Bank naprawdę nabiera kształtów! Na konta można wpłacać środki i wypłacać je po odpowiednim sprawdzeniu dostępnych funduszy. Teraz dodajmy metodę pobierającą saldo, a następnie połączmy wszystko w realistycznym scenariuszu bankowym.
Kontynuujesz pracę nad istniejącymi plikami:
Account.lua: Dodaj metodę:getBalance(), która zwraca bieżące saldo. Jest to zgodne ze wzorcem metody pobierającej, którego uczyłeś się wcześniej: zapewnia kontrolowany dostęp do danych wewnętrznych zamiast bezpośredniego odczytu pola. Zachowaj całą dotychczasową funkcjonalność (konstruktor oraz metody deposit i withdraw).main.lua: Utwórz konto i wykonaj sekwencję operacji bankowych, aby pokazać, jak wpłaty, wypłaty i sprawdzanie salda działają razem w rzeczywistej sytuacji.
Otrzymasz pięć danych wejściowych:
- Kwota początkowej wpłaty
- Kwota pierwszej wypłaty
- Kwota drugiej wpłaty
- Kwota drugiej wypłaty
- Kwota trzeciej wypłaty
W pliku głównym utwórz konto i wykonaj kolejno następujące operacje:
- Wpłać początkową kwotę, a następnie wyświetl saldo za pomocą
:getBalance() - Wypłać pierwszą kwotę, a następnie wyświetl saldo
- Wpłać drugą kwotę, a następnie wyświetl saldo
- Wypłać drugą kwotę, a następnie wyświetl saldo
- Spróbuj wykonać trzecią wypłatę, a następnie wyświetl saldo
Pamiętaj, że nieudane wypłaty wyświetlą Insufficient funds przed wyświetleniem salda.
Na przykład, jeśli dane wejściowe to 200, 50, 100, 180 i 100, dane wyjściowe powinny wyglądać następująco:
200
150
250
70
Insufficient funds
70Saldo konta wynosi początkowo 200, spada do 150 po pierwszej wypłacie, rośnie do 250 po kolejnej wpłacie, spada do 70 po wypłacie 180 i pozostaje na poziomie 70, gdy ostatnia wypłata w wysokości 100 nie powiedzie się z powodu niewystarczających środków.
Spróbuj swoich sił
-- Załaduj moduł Account
local Account = require('Account')
-- Odczytaj pięć wartości wejściowych
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local deposit2 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())
-- Utwórz jedno konto
local account = Account:new()
-- Wpłać początkową kwotę i wyświetl saldo za pomocą :getBalance()
account:deposit(initialDeposit)
print(account:getBalance())
-- Spróbuj wykonać pierwszą wypłatę i wyświetl saldo
account:withdraw(withdrawal1)
print(account:getBalance())
-- Wpłać drugą kwotę i wyświetl saldo
account:deposit(deposit2)
print(account:getBalance())
-- Spróbuj wykonać drugą wypłatę i wyświetl saldo
account:withdraw(withdrawal2)
print(account:getBalance())
-- Spróbuj wykonać trzecią wypłatę i wyświetl saldo
account:withdraw(withdrawal3)
print(account:getBalance())
Wszystkie lekcje w sekcji Programowanie obiektowe
1Koncepcja „self”
Tabele z funkcjamiJawne „self”Składnia z dwukropkiemKropka czy dwukropekPodsumowanie — poruszający się punkt4Projekt: Bank cyfrowy
Konfiguracja projektuMetoda wpłaty7Polimorfizm i nadpisywanie
Nadpisywanie metodWywoływanie metod klasy nadrzędnejTypowanie kaczeWspólny interfejsSprawdzanie typuPodsumowanie — role pracowników10Projekt: Menedżer kształtów
Konfiguracja projektuKlasa prostokątaKlasa kołaMetoda obwoduKolekcja kształtówPole całkowiteFiltrowanie kształtów2Wzorzec prototypu klasy
Koncepcja prototypuŁączenie za pomocą __indexKonstruktor :new()Inicjalizacja atrybutówNiezależne instancjePodsumowanie – fabryka samochodów5Przeciążanie operatorów w OOP
Dodawanie obiektówOdejmowanie obiektówŁączenie obiektówPorównywanie obiektów (<, >)Powtórka — działania na portfelu8Hermetyzacja
Konwencje nazewnictwaDomknięcia dla prywatnościDostęp za pomocą domknięćTabele tylko do odczytuLogika walidacjiPodsumowanie — bezpieczny sejf11Wzorce projektowe (podstawy)
Funkcje fabrykująceTabela SingletonWzorzec iteratoraObserwator (nasłuchujący)Powtórka — fabryka loggera3Stan i zachowanie obiektu
Zmienne instancjiMetody dostępoweMetody ustawiająceWłaściwości obliczaneFormatowanie ciągów znakówSprawdzanie równościPodsumowanie – ocena ucznia6Podstawy dziedziczenia
Konfiguracja dziedziczeniaDziedziczenie metodRozszerzanie konstruktoraDodawanie metod potomnychWspólne i unikalne elementyPowtórka — hierarchia kształtówPoćwicz samodzielnie: Kompilator Lua online