Menu
Coddy logo textTech

Przelew środków

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

challenge icon

Wyzwanie

Łatwy

Twój Bank Cyfrowy jest prawie gotowy! Ostatnią dużą funkcją jest możliwość przelewania pieniędzy między kontami. Właśnie tutaj Twój projekt zorientowany obiektowo pokazuje swoje zalety: jeden obiekt konta może bezpośrednio współdziałać z innym obiektem konta.

Dodasz metodę :transfer(targetAccount, amount), która przenosi pieniądze z jednego konta na drugie. Zastanów się, na czym tak naprawdę polega ta operacja: to wypłata z konta źródłowego, a następnie wpłata na konto docelowe. Zaletą jest to, że możesz ponownie wykorzystać metody, które już utworzyłeś!

Kontynuuj pracę na istniejących plikach:

  • Account.lua: Dodaj do klasy Account metodę :transfer(targetAccount, amount). Metoda powinna spróbować wypłacić kwotę z self, a jeśli się powiedzie, wpłacić tę kwotę na targetAccount. Jeśli wypłata się nie powiedzie (z powodu niewystarczających środków), przelew nie powinien się odbyć. Zachowaj całą dotychczasową funkcjonalność (konstruktor z ID, wpłatę, wypłatę, getBalance i __tostring).
  • main.lua: Utwórz wiele kont i zademonstruj przelewy między nimi, pokazując zmiany sald różnych obiektów kont.

Otrzymasz pięć danych wejściowych:

  1. ID pierwszego konta
  2. ID drugiego konta
  3. Początkowa wpłata na pierwsze konto
  4. Kwota pierwszego przelewu (z konta 1 na konto 2)
  5. Kwota drugiego przelewu (z konta 1 na konto 2)

W pliku głównym utwórz dwa konta o podanych ID (oba z początkowym saldem 0), wpłać początkową kwotę na pierwsze konto, a następnie spróbuj wykonać oba przelewy z pierwszego konta na drugie. Po każdej próbie przelewu wypisz oba konta (metoda __tostring pokaże ich aktualny stan).

Na przykład, jeśli danymi wejściowymi są 101, 102, 500, 200 i 400, wynikiem powinno być:

Account [101]: Balance = 300
Account [102]: Balance = 200
Insufficient funds
Account [101]: Balance = 300
Account [102]: Balance = 200

Pierwsze konto ma po wpłacie saldo 500. Pierwszy przelew na kwotę 200 powiedzie się, pozostawiając saldo konta 101 równe 300, a saldo konta 102 równe 200. Drugi przelew na kwotę 400 nie powiedzie się, ponieważ na koncie 101 jest tylko 300, więc oba salda pozostaną bez zmian.

Spróbuj swoich sił

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

-- Odczytaj pięć wartości wejściowych
local id1 = io.read()
local id2 = io.read()
local initialDeposit = tonumber(io.read())
local transfer1 = tonumber(io.read())
local transfer2 = tonumber(io.read())

-- Utwórz dwa konta z identyfikatorami
local account1 = Account:new(id1)
local account2 = Account:new(id2)

-- Wpłać początkową kwotę na pierwsze konto
account1:deposit(initialDeposit)

-- TODO: Spróbuj wykonać pierwszy przelew z account1 na account2

-- TODO: Wyświetl oba konta po pierwszym przelewie

-- TODO: Spróbuj wykonać drugi przelew z account1 na account2

-- TODO: Wyświetl oba konta po drugim przelewie

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Lua online