Podsumowanie – fabryka samochodów
Część sekcji Programowanie obiektowe ścieżki Lua w Coddy. Lekcja 11 z 70.
Wyzwanie
ŁatwyZbudujmy kompletną klasę Car, która łączy wszystko, czego nauczyłeś się w tym rozdziale! Utworzysz system fabryki samochodów, w którym każdy samochód ma własny model i kolor, demonstrując prawidłową organizację modułów oraz niezależne instancje.
Rozmieścisz swój kod w dwóch plikach:
Car.lua: Zdefiniuj klasęCarzgodnie ze standardowym wzorcem prototypowym. Twoja klasa potrzebuje konstruktora:new(model, color), który tworzy samochody z własnymi atrybutami. Dodaj metodę:describe(), dzięki której każdy samochód będzie mógł się przedstawić.main.lua: Zaimportuj moduł Car i utwórz wiele instancji samochodów, aby pokazać, że każdy samochód zachowuje własny, niezależny stan.
Twoja metoda :describe() powinna wypisywać tekst w dokładnie takim formacie:
A [color] [model]Otrzymasz cztery dane wejściowe:
- Model pierwszego samochodu
- Kolor pierwszego samochodu
- Model drugiego samochodu
- Kolor drugiego samochodu
W głównym pliku utwórz dwa samochody, używając podanych danych wejściowych, i spraw, by każdy z nich opisał się w osobnym wierszu.
Na przykład, jeśli dane wejściowe to Sedan, blue, Truck i red, wynikiem powinno być:
A blue Sedan
A red TruckKażdy samochód powinien przechowywać własny model i kolor, co dowodzi, że Twoja klasa tworzy naprawdę niezależne instancje.
Spróbuj swoich sił
-- Załaduj moduł Car
local Car = require('Car')
-- Wczytaj dane wejściowe
local model1 = io.read()
local color1 = io.read()
local model2 = io.read()
local color2 = io.read()
-- TODO: Utwórz dwa obiekty samochodów za pomocą Car:new()
-- TODO: Wywołaj :describe() dla każdego samochodu, aby wypisać ich opisy
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