Konfiguracja projektu
Część sekcji Programowanie obiektowe ścieżki Lua w Coddy. Lekcja 55 z 70.
Wyzwanie
ŁatwyZbudujmy fundament systemu Shape Manager! Ten projekt będzie rozwijany przez kilka kolejnych lekcji, więc zaczniemy od przygotowania przejrzystej struktury plików z podstawową klasą Shape.
Utworzysz dwa pliki, aby uporządkować swój kod:
Shape.lua: Zdefiniuj podstawową klasęShapeprzy użyciu wzorca prototypu. Każdy kształt ma atrybutname(na przykład "Circle" lub "Rectangle"). Dodaj konstruktor:new(name), który przyjmuje nazwę kształtu, oraz metodę:getName(), która ją zwraca.main.lua: Ożyw swoją klasę Shape, wczytując moduł i tworząc instancję kształtu. Wczytaj nazwę kształtu z wejścia, utwórz obiekt Shape o tej nazwie i wypisz wynik wywołania:getName().
Ta podstawowa klasa będzie klasą nadrzędną dla konkretnych kształtów, takich jak Rectangle i Circle, w kolejnych lekcjach. Na razie skup się na poprawnej strukturze klasy: konfiguracji __index, wzorcu konstruktora i metodzie zwracającej wartość.
Wejście: Jeden wiersz zawierający nazwę kształtu (ciąg znaków).
Wyjście: Nazwa kształtu zwrócona przez :getName().
Spróbuj swoich sił
-- Załaduj moduł Shape
local Shape = require('Shape')
-- Odczytaj nazwę kształtu z wejścia
local shapeName = io.read()
-- TODO: Utwórz nową instancję Shape o podanej nazwie
-- TODO: Wypisz wynik wywołania :getName() na utworzonym kształcie
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