INF.04 · C# · lekcja 19
Projekt końcowy — system wypożyczalni w konsoli
Wypożyczalnia: od modelu do działającej operacji
- Zrozum
- Sprawdź
- Napisz sam
Po tej lekcji: wypożyczalnia: od modelu do działającej operacji
Dzisiaj zrobisz konkretną rzecz
Pojedyncze umiejętności — klasa, dziedziczenie, wyjątek — to jedno. Prawdziwa wartość pojawia się dopiero wtedy, gdy złożysz je w jeden, spójny, DZIAŁAJĄCY program — dokładnie tak, jak wygląda zadanie praktyczne na egzaminie INF.04 i jak wygląda prawdziwa praca programisty.
To dokładnie taki projekt, jaki mógłbyś zobaczyć jako zadanie na egzaminie INF.04 w części praktycznej — aplikacja konsolowa z hierarchią klas, kolekcją obiektów i menu sterowanym przez użytkownika.
Sprawdź w działaniu
Wypożyczalnia: od modelu do działającej operacji
Najpierw przewidź wynik. Zmień dane w modelu i porównaj efekt. Spróbuj także przypadku granicznego, a nie tylko pierwszego poprawnego przykładu.
Model pokazuje wybraną zasadę. Nie uruchamia ani nie ocenia wklejonego kodu C#.
1. Przygotuj i uruchom własny projekt
2. Najpierw mały przykład
Wykonaj tę próbę przed dłuższym rozwiązaniem. Zacznij od jednej operacji bez menu. Dopiero gdy stan zmienia się poprawnie, dodawaj kolekcję, klasy pochodne i obsługę wejścia według wymagań projektu. To uruchamialny pierwszy etap, nie całe rozwiązanie zadania.
var film = new Film("Diuna");
Console.WriteLine(film.Wypozycz());
Console.WriteLine(film.Wypozycz());
film.Zwroc();
Console.WriteLine(film.Wypozycz());
class Film
{
public string Tytul { get; }
public bool Wypozyczony { get; private set; }
public Film(string tytul) { Tytul = tytul; }
public bool Wypozycz()
{
if (Wypozyczony) return false;
Wypozyczony = true; return true;
}
public void Zwroc() { Wypozyczony = false; }
}
True False True
- Co sprawdzić? Zmień jedną wartość i przed uruchomieniem zapisz przewidywany rezultat. Porównaj go z opisem wyniku; przy błędzie wróć do konkretnej instrukcji.
Jak to działa — 1
To podsumowanie całego działu — zbudujesz KOMPLETNY, działający system wypożyczalni w konsoli, łącząc wszystkie 17 poprzednich lekcji w jeden spójny projekt: klasy i obiekty, hermetyzację, konstruktory, dziedziczenie, polimorfizm, klasy abstrakcyjne, wyjątki, kolekcje generyczne i (opcjonalnie) jeden z poznanych wzorców projektowych.
Wymagane elementy projektu:
1. Klasa abstrakcyjna Produkt (pola: Tytul, CzyWypozyczony; metoda abstrakcyjna OplataZaDzien()).
2. Co najmniej dwie klasy pochodne, np. Film i Konsola, każda z własną implementacją OplataZaDzien().
3. Klasa Wypozyczalnia przechowująca List<Produkt> (Lekcja 8 + 16), z metodami: Wypozycz(Produkt p) (rzuca wyjątek, jeśli produkt jest już wypożyczony — Lekcja 16), Zwroc(Produkt p), WyswietlDostepne() (wypisuje tylko produkty z CzyWypozyczony == false).
4. Obsługa błędów przez try-catch przy próbie wypożyczenia niedostępnego produktu.
5. Menu tekstowe w pętli (Lekcja 7) pozwalające użytkownikowi wybrać akcję (wypożycz/zwróć/pokaż dostępne/zakończ) przez instrukcję switch (Lekcja 5).
Jak to działa — 2
To dokładnie ten poziom złożoności, jakiego można się spodziewać w rozbudowanym zadaniu praktycznym z programowania obiektowego na egzaminie INF.04.
Sprawdź, zanim przepiszesz cały program
Największy błąd na tym etapie to próba napisania wszystkiego naraz — buduj projekt DOKŁADNIE w kolejności z listy wymaganych elementów, testując każdy fragment osobno, zanim przejdziesz do kolejnego (dokładnie tak, jak w zadaniach łatwym/średnim/trudnym powyżej). Drugi błąd: kopiowanie fragmentów kodu z poprzednich lekcji bez zastanowienia, czy dokładnie pasują do nowego kontekstu — wróć do konkretnej lekcji, jeśli czegoś nie pamiętasz, zamiast zgadywać. Trzeci: pominięcie obsługi wyjątków "bo to tylko projekt szkolny" — to właśnie umiejętność łączenia obsługi błędów z resztą logiki biznesowej jest tym, co odróżnia solidny projekt od prowizorki.
Ćwiczenie z pomocą · samodzielna praca
4. Teraz Twoja zmiana
Zanim zaczniesz kodować, narysuj na kartce diagram klas (podobny do diagramu w tej lekcji) z dokładnymi polami i metodami każdej klasy Twojego projektu.
Spełnij warunki polecenia. Zapisz wejście, otrzymany wynik i wyjaśnij, która część kodu za niego odpowiada.
? Potrzebujesz pomocy? Rozwiązuj krok po kroku.
Krok 1 — pokaż podpowiedź
Wróć do podstawowej formy oraz objaśnienia: Zacznij od jednej operacji bez menu. Dopiero gdy stan zmienia się poprawnie, dodawaj kolekcję, klasy pochodne i obsługę wejścia według wymagań projektu. To uruchamialny pierwszy etap, nie całe rozwiązanie zadania.
Krok 2 — pokaż podpowiedź
Zmień tylko część potrzebną do polecenia. Zachowaj działającą wersję przed zmianą i uruchamiaj po każdym małym etapie.
Krok 3 — pokaż podpowiedź
Sprawdź przypadek zwykły i graniczny; porównaj z regułą: True False True
Otwórz tylko tyle podpowiedzi, ile potrzebujesz. Po każdym kroku wróć do zadania i sprawdź wynik.
5. Sprawdź rozumienie, nie tylko uruchomienie
Dalej na swoim koncie
Rozgrzewki, quiz i zadania są w biurku ucznia.
Teoria jest otwarta dla wszystkich. Żeby rozwiązywać zadania, zapisywać szkice i widzieć swój postęp, zaloguj się.
Zaloguj się →