Podsumowanie – ocena ucznia
Część sekcji Programowanie obiektowe ścieżki Lua w Coddy. Lekcja 18 z 70.
Wyzwanie
ŁatwyStwórzmy kompletną klasę Student, która łączy wszystko, czego nauczyłeś się w tym rozdziale: zmienne instancji, metody pobierające, metody ustawiające i właściwości obliczane, które współpracują ze sobą!
Rozmieścisz swój kod w dwóch plikach:
Student.lua: Zdefiniuj klasęStudentprzy użyciu standardowego wzorca prototypu. Każdy student powinien przechowywaćnameigrade. Twoja klasa potrzebuje:- Konstruktora
:new(name, grade) - Metody pobierającej
:getName(), która zwraca imię studenta - Metody pobierającej
:getGrade(), która zwraca aktualną ocenę - Metody ustawiającej
:setGrade(newGrade), która aktualizuje ocenę - Metody
:hasPassed(threshold), która zwracatrue, jeśli ocena studenta jest większa lub równa progowi, a w przeciwnym raziefalse
- Konstruktora
main.lua: Załaduj swój moduł Student i zaprezentuj wszystkie funkcje, tworząc studenta, sprawdzając jego status, aktualizując jego ocenę i weryfikując zmiany.
Otrzymasz cztery dane wejściowe:
- Imię studenta
- Ocena początkowa
- Sprawdzany próg zaliczenia
- Nowa ocena do ustawienia
W pliku głównym utwórz studenta z podanym imieniem i oceną początkową, a następnie wypisz w osobnych wierszach:
- Imię studenta
- Początkową ocenę studenta
- Czy student zaliczył przy podanym progu (wypisz
truelubfalse) - Ocenę studenta po zaktualizowaniu jej nową oceną
- Czy student zaliczył przy tym samym progu po aktualizacji oceny
Na przykład, jeśli dane wejściowe to Emma, 55, 60 i 75, wynik powinien być następujący:
Emma
55
false
75
trueEmma początkowo miała ocenę 55, która nie osiągała progu zaliczenia wynoszącego 60. Po zmianie oceny na 75 zdała!
Spróbuj swoich sił
-- Załaduj moduł Student za pomocą require
local Student = require('Student')
-- Odczytaj dane wejściowe
local name = io.read()
local initialGrade = tonumber(io.read())
local threshold = tonumber(io.read())
local newGrade = tonumber(io.read())
-- TODO: Utwórz ucznia o podanym imieniu i ocenie początkowej
-- TODO: Wypisz imię ucznia za pomocą gettera
-- TODO: Wypisz ocenę początkową ucznia za pomocą gettera
-- TODO: Sprawdź i wypisz, czy uczeń zdał przy podanym progu
-- TODO: Zaktualizuj ocenę ucznia za pomocą settera
-- TODO: Wypisz nową ocenę ucznia
-- TODO: Sprawdź i wypisz, czy uczeń zdał po aktualizacji oceny
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