Menu
Coddy logo textTech

Metoda wypłaty

Część sekcji Programowanie obiektowe ścieżki Lua w Coddy. Lekcja 21 z 70.

challenge icon

Wyzwanie

Łatwy

Twój Bank Cyfrowy się rozwija! Na konta można już wpłacać pieniądze, ale prawdziwy bank musi też umożliwiać klientom ich wypłacanie. Dodajmy metodę :withdraw(amount), ale z ważnym zabezpieczeniem.

W przeciwieństwie do wpłat wypłaty mogą się nie powieść. Jeśli klient spróbuje wypłacić więcej pieniędzy, niż ma na koncie, bank nie powinien na to pozwolić. Metoda wypłaty musi sprawdzić, czy dostępne środki są wystarczające, zanim odejmie daną kwotę.

Kontynuujesz pracę z dwoma plikami:

  • Account.lua: Dodaj metodę :withdraw(amount) do istniejącej klasy Account. Jeśli saldo konta jest wystarczające, odejmij daną kwotę i zwróć true. Jeśli środków jest za mało, wypisz Insufficient funds i zwróć false, nie zmieniając salda.
  • main.lua: Utwórz konto, wpłać na nie pewną kwotę, a następnie spróbuj wykonać kilka wypłat, aby zobaczyć zarówno udane, jak i nieudane transakcje.

Otrzymasz cztery dane wejściowe:

  1. Kwota początkowej wpłaty
  2. Kwota pierwszej wypłaty
  3. Kwota drugiej wypłaty
  4. Kwota trzeciej wypłaty

W pliku głównym utwórz konto, wpłać początkową kwotę, a następnie spróbuj wykonać kolejno każdą wypłatę. Po każdej próbie wypłaty wypisz bieżące saldo w nowej linii. Pamiętaj, że nieudane wypłaty również wypiszą Insufficient funds, zanim wypiszesz saldo.

Na przykład, jeśli danymi wejściowymi są 100, 30, 50 i 40, wynikiem powinno być:

70
20
Insufficient funds
20

Po wpłacie saldo konta wynosi 100. Pierwsza wypłata w wysokości 30 kończy się powodzeniem (saldo: 70), druga wypłata w wysokości 50 również się udaje (saldo: 20), ale trzecia wypłata w wysokości 40 kończy się niepowodzeniem, ponieważ pozostało tylko 20, więc saldo pozostaje równe 20.

Spróbuj swoich sił

-- Załaduj moduł Account
local Account = require('Account')

-- Odczytaj cztery wartości wejściowe
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())

-- Utwórz jedno konto
local account = Account:new()

-- Wpłać kwotę początkową
account:deposit(initialDeposit)

-- Spróbuj wykonać pierwszą wypłatę i wyświetl saldo
-- TODO: wywołaj tutaj account:withdraw(withdrawal1)
print(account.balance)

-- Spróbuj wykonać drugą wypłatę i wyświetl saldo
-- TODO: wywołaj tutaj account:withdraw(withdrawal2)
print(account.balance)

-- Spróbuj wykonać trzecią wypłatę i wyświetl saldo
-- TODO: wywołaj tutaj account:withdraw(withdrawal3)
print(account.balance)

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Lua online