Metoda wpłaty
Część sekcji Programowanie obiektowe ścieżki Lua w Coddy. Lekcja 20 z 70.
Wyzwanie
ŁatwyRozpoczynamy projekt Cyfrowego Banku. Czas dodać funkcjonalność do nowego systemu! Skoro można już tworzyć konta z saldem początkowym wynoszącym 0, dodajmy możliwość wpłacania na nie pieniędzy.
Rozbuduj istniejącą klasę Account, dodając metodę :deposit(amount), która zwiększa saldo konta o podaną kwotę. To podstawowa operacja bankowa: pieniądze wpływają na konto, a saldo rośnie!
Twoje dwa pliki:
Account.lua: Rozbuduj klasę Account, dodając metodę:deposit(amount). Ta metoda powinna dodać podaną kwotę doself.balance. Zachowaj wszystko z poprzedniej lekcji (strukturę klasy i konstruktor:new()).main.lua: Załaduj moduł Account, utwórz konto, wykonaj kilka wpłat i pokaż, jak zmienia się saldo.
Otrzymasz trzy dane wejściowe:
- Kwotę pierwszej wpłaty
- Kwotę drugiej wpłaty
- Kwotę trzeciej wpłaty
W pliku głównym utwórz jedno konto i wykonaj kolejno trzy wpłaty. Po każdej wpłacie wypisz aktualne saldo w nowej linii.
Na przykład, jeśli dane wejściowe to 100, 50 i 25, dane wyjściowe powinny wyglądać tak:
100
150
175Zwróć uwagę, że każda wpłata zwiększa poprzednie saldo: konto zaczyna od 0, następnie po pierwszej wpłacie saldo wzrasta do 100, po drugiej do 150, a po trzeciej do 175. Metoda :deposit() umożliwia takie sumowanie!
Spróbuj swoich sił
-- Załaduj moduł Account
local Account = require('Account')
-- Wczytaj trzy kwoty wpłat
local deposit1 = tonumber(io.read())
local deposit2 = tonumber(io.read())
local deposit3 = tonumber(io.read())
-- Utwórz jedno konto
local account = Account:new()
-- Wykonaj trzy wpłaty i po każdej wypisz saldo
-- TODO: wpłać deposit1 i wypisz account.balance
-- TODO: wpłać deposit2 i wypisz account.balance
-- TODO: wpłać deposit3 i wypisz account.balance
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