Informacje o koncie
Część sekcji Programowanie obiektowe ścieżki Lua w Coddy. Lekcja 23 z 70.
Wyzwanie
ŁatwyTwój Bank Cyfrowy staje się coraz bardziej profesjonalny! Teraz sprawmy, aby konta ładnie prezentowały się podczas drukowania. Dodając metametodę __tostring, możesz dokładnie określić, jak będzie wyglądać konto: wyświetlić zarówno identyfikator konta, jak i bieżące saldo w przejrzystym, czytelnym formacie.
Będziesz dalej pracować na swoich istniejących plikach:
Account.lua: Rozszerz klasę Account o dwie nowe funkcje:- Zmodyfikuj konstruktor
:new(), aby przyjmował parametrididentyfikujący każde konto - Dodaj metametodę
__tostring, która zwraca sformatowany ciąg znaków z informacjami o koncie
- Zmodyfikuj konstruktor
main.lua: Utwórz konta z identyfikatorami i pokaż, jak prezentują się podczas drukowania.
Metoda __tostring powinna zwracać ciąg znaków w dokładnie takim formacie:
Account [ID]: Balance = BALANCEGdzie ID to identyfikator konta, a BALANCE to bieżące saldo.
Otrzymasz cztery dane wejściowe:
- Identyfikator pierwszego konta
- Kwota wpłaty na pierwsze konto
- Identyfikator drugiego konta
- Kwota wpłaty na drugie konto
W głównym pliku utwórz dwa konta z podanymi identyfikatorami, wpłać na każde odpowiednią kwotę, a następnie wydrukuj każde konto bezpośrednio za pomocą print(). Metametoda __tostring zostanie automatycznie wywołana podczas drukowania obiektu konta.
Na przykład, jeśli dane wejściowe to 1001, 500, 1002 i 750, wynikiem powinno być:
Account [1001]: Balance = 500
Account [1002]: Balance = 750Każde konto ma teraz własną, unikalną tożsamość i potrafi jasno się opisać: to znacznie bardziej profesjonalna bankowość!
Spróbuj swoich sił
-- Załaduj moduł Account za pomocą require
local Account = require('Account')
-- Wczytaj cztery dane wejściowe
local id1 = io.read()
local deposit1 = tonumber(io.read())
local id2 = io.read()
local deposit2 = tonumber(io.read())
-- Utwórz dwa konta z identyfikatorami
local account1 = Account:new(id1)
local account2 = Account:new(id2)
-- Wpłać odpowiednie kwoty
account1:deposit(deposit1)
account2:deposit(deposit2)
-- Wyświetl każde konto (używa __tostring)
print(account1)
print(account2)
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