Menu
Coddy logo textTech

Końcowy test banku

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

challenge icon

Wyzwanie

Łatwy

Gratulacje! Udało Ci się zbudować kompletny system bankowości cyfrowej! Twoja klasa Account obsługuje teraz wpłaty, wypłaty, sprawdzanie salda, identyfikację kont i przelewy między kontami. Przetestujmy to wszystko w realistycznym scenariuszu bankowym obejmującym wiele kont.

W tym ostatnim wyzwaniu zasymulujesz działanie małego banku, w którym trzech klientów wykonuje różne transakcje. Dzięki temu sprawdzisz, czy wszystkie metody poprawnie ze sobą współpracują i czy konta rzeczywiście zachowują niezależny stan.

Twoje dwa pliki:

  • Account.lua: kompletna klasa Account ze wszystkimi funkcjonalnościami, które utworzyłeś w trakcie tego projektu (konstruktor z ID, deposit, withdraw, getBalance, __tostring i transfer).
  • main.lua: skrypt symulacyjny, który tworzy wiele kont i wykonuje serię transakcji między nimi.

Otrzymasz sześć danych wejściowych:

  1. ID konta 1
  2. ID konta 2
  3. ID konta 3
  4. Początkowa wpłata na konto 1
  5. Początkowa wpłata na konto 2
  6. Początkowa wpłata na konto 3

W pliku głównym zasymuluj następujący dzień w banku:

  1. Utwórz trzy konta z podanymi ID
  2. Wpłać początkowe kwoty na odpowiednie konta
  3. Konto 1 przelewa 100 na konto 2
  4. Konto 2 przelewa 150 na konto 3
  5. Konto 3 przelewa 50 na konto 1
  6. Konto 1 próbuje przelać 1000 na konto 3 (ta operacja powinna się nie powieść)
  7. Wyświetl wszystkie trzy konta w kolejności (najpierw konto 1, potem 2, a następnie 3)

Na przykład, jeśli danymi wejściowymi są A001, A002, A003, 500, 300 i 200, wynik powinien być następujący:

Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300

Prześledźmy przebieg: konto 1 zaczyna z kwotą 500, przelewa 100 na konto 2 (pozostaje 400), a następnie otrzymuje 50 od konta 3 (ma teraz 450). Konto 2 zaczyna z kwotą 300, otrzymuje 100 (ma teraz 400), a potem przelewa 150 na konto 3 (pozostaje 250). Konto 3 zaczyna z kwotą 200, otrzymuje 150 (ma teraz 350), a następnie przelewa 50 na konto 1 (pozostaje 300). Ostatni przelew na kwotę 1000 nie powiedzie się, ponieważ konto 1 ma tylko 450.

Spróbuj swoich sił

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

-- Wczytaj sześć wartości wejściowych
local id1 = io.read()
local id2 = io.read()
local id3 = io.read()
local initialDeposit1 = tonumber(io.read())
local initialDeposit2 = tonumber(io.read())
local initialDeposit3 = tonumber(io.read())

-- Utwórz trzy konta z identyfikatorami
-- TODO: utwórz account1, account2, account3 za pomocą Account:new()

-- Wpłać początkowe kwoty na odpowiednie konta
-- TODO: wpłać initialDeposit1 na account1, initialDeposit2 na account2, initialDeposit3 na account3

-- Konto 1 przelewa 100 na konto 2
-- TODO: account1:transfer(account2, 100)

-- Konto 2 przelewa 150 na konto 3
-- TODO: account2:transfer(account3, 150)

-- Konto 3 przelewa 50 na konto 1
-- TODO: account3:transfer(account1, 50)

-- Konto 1 próbuje przelać 1000 na Konto 3 (ta operacja powinna się nie powieść)
-- TODO: account1:transfer(account3, 1000)

-- Wyświetl wszystkie trzy konta po kolei
-- TODO: wyświetl account1, account2, account3 za pomocą print

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Lua online