Powtórka — działania na portfelu
Część sekcji Programowanie obiektowe ścieżki Lua w Coddy. Lekcja 30 z 70.
Wyzwanie
ŁatwyZbudujmy klasę Wallet, która łączy umiejętności przeciążania operatorów poznane w tym rozdziale. Twój portfel będzie przechowywać kwotę pieniędzy i obsługiwać dwie kluczowe operacje: łączenie portfeli za pomocą + oraz porównywanie portfeli za pomocą < i >.
Rozmieścisz swój kod w dwóch plikach:
Wallet.lua: Zdefiniuj klasę Wallet z polemamountreprezentującym ilość przechowywanych pieniędzy. Dodaj konstruktor:new(amount)i zaimplementuj dwie metody metatabeli:__add: Dodanie dwóch portfeli tworzy nowy portfel zawierający łączną kwotę__lt: Porównanie portfeli określa, w którym z nich jest mniej pieniędzy
main.lua: Załaduj moduł Wallet, utwórz instancje portfela i pokaż działanie obu operacji.
Otrzymasz trzy dane wejściowe:
- Kwota w pierwszym portfelu
- Kwota w drugim portfelu
- Kwota w trzecim portfelu
W pliku głównym utwórz trzy portfele z podanymi kwotami. Następnie:
- Dodaj do siebie pierwszy i drugi portfel, aby utworzyć połączony portfel
- Wypisz kwotę połączonego portfela
- Porównaj połączony portfel z trzecim portfelem za pomocą
<i wypisz wynik (truelubfalse) - Porównaj połączony portfel z trzecim portfelem za pomocą
>i wypisz wynik (truelubfalse)
Na przykład, jeśli dane wejściowe to 50, 30 i 100, wynikiem powinno być:
80
true
falsePierwszy portfel (50) plus drugi portfel (30) tworzy połączony portfel z kwotą 80. Ponieważ 80 jest mniejsze niż 100, pierwsze porównanie daje true. Ponieważ 80 nie jest większe niż 100, drugie porównanie daje false.
Spróbuj swoich sił
local Wallet = require('Wallet')
-- Wczytaj dane wejściowe
local amount1 = tonumber(io.read())
local amount2 = tonumber(io.read())
local amount3 = tonumber(io.read())
-- TODO: Utwórz trzy portfele z podanymi kwotami
-- TODO: Dodaj do siebie pierwszy i drugi portfel, aby utworzyć połączony portfel
-- TODO: Wypisz kwotę w połączonym portfelu
-- TODO: Porównaj połączony portfel z trzecim portfelem za pomocą < i wypisz wynik
-- TODO: Porównaj połączony portfel z trzecim portfelem za pomocą > i wypisz wynik
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