Programowanie obiektowe w C++ – System rezerwacji biletów w kinie cz. II

Gościnie autorem wpisu jest Adam Sawicki.

Zgodnie z obietnicą przystępujemy do budowy klasy Kino, trzymającej pieczę nad obiektami klasy Miejsce.

Fot: Unsplash, CC0 Public Domain.

Fot: Unsplash, CC0 Public Domain.

Zróbmy małe założenie. Wcześniej ustaliliśmy, że liczba miejsc w kinie jest stała. Przyjmijmy, że jest ich 30. Tablica będzie doskonałą strukturą, przechowującą te obiekty. Przeistoczmy w kod to, co do tej pory powiedzieliśmy:

Umieśćmy powyższy kod pod kodem klasy Miejsce.

Ilość miejsc została zdefiniowana i zainicjalizowana jako stała statyczna klasy, aby umożliwić definicję tablicy wszystkie_miejsca.

Konstruktor domyślny powinien utworzyć 30 niezarezerwowanych miejsc z odpowiednio przypisanymi numerami.

Od teraz każdy obiekt Kino będzie zawierał 30 obiektów Miejsce ponumerowanych od 1 do 30. Przekonajmy się o tym na własne oczy :-) Uzupełnijmy klasę Kino o metodę wyswietl_wszystkie_miejca:

W funkcji głównej zadeklarujmy obiekt klasy Kino:

i zobaczmy jak wygląda stan miejsc:

Kod możemy umieścić tuż przed wyświetleniem menu głównego. Po skompilowaniu i uruchomieniu programu widzimy, że w kinie dostępnych jest 30 wolnych miejsc. Oczywiście podczas rozbudowy programu wyświetlenie miejsc można usunąć. Była to tylko dla nas tymczasowa informacja.

Mamy ładne menu, klasę Miejsce i klasę Kino. Nic nie stoi już na przeszkodzie, aby zacząć uzupełniać nasze menu, obecnie wyglądające tak:

Opcja numer 4 jest idealnym miejscem na wywołanie metody wyswietl_wszystkie_miejsca. Po modyfikacji wygląda ona następująco:

Jednak nie zadziała to zgodnie z naszymi założeniami. Po wywołaniu metody wyswietl_wszystkie_miejsca() obiektu kino program wykona:

Tym samym z powrotem powrócimy do menu głównego. W związku z tym proponuję napisanie dodatkowej funkcji

Kod umieśćmy na samym początku, pod using namespace std;.

Wstawienie jej dowolnym miejscu kodu spowoduje jego zatrzymanie, umożliwiając mam przeczytanie informacji podanej przez program.

Teraz opcja numer 4:

daje nam mozliwość szybkiego podglądu stanu rezerwacji.

W bardzo podobny sposób zmodyfikujemy opcje 5 i 6. Wystarczy niewielki if dodany do metody wyswietl_wszystkie_miejsca i po robocie.

Ale cóż to za metoda jestZarezerwowane()? Zdziwienie jest uzasadnione ponieważ jeszcze jej nie napisaliśmy a już chcemy użyć. Dlatego jak najszybciej uzupełnijmy klasę Miejsce o brakujące linijki aby nie narazić się naszemu kompilatorowi :-)

Po uzupełnieniu funkcji switch nasz program coraz bardziej nabiera charakteru ;-)

Pora na dokonanie pierwszej rezerwacji w systemie. Jej etapy będą następujące:

  • wybór miejsca
  • sprawdzenie czy miejsce istnieje
  • jeżeli tak, sprawdzenie czy miejsce jest wolne
  • pobranie imienia
  • pobranie nazwiska

Dodajmy do klasy Kino metodę dodaj_rezerwacje oraz wybierz_miejsce:

Kod ten pobiera numer miejsca od użytkownika. Jeżeli nie należy on do zakresu dostępnych miejsc i jest różny od 0, podawany jest odpowiedni komunikat. Numer 0 będzie informacją, ze żadne z miejsc nie zostało wybrane.

Uzupełnijmy funkcję switch:

Od teraz kino może obsługiwać klientów bez obawy o brak wolnych miejsc. Dodatkowym ułatwieniem będzie możliwość sprawdzenia stanu wybranego miejsca. Przyda się to w przypadku rozbudowy kina, kiedy ogarnięcie wzrokiem listy wszystkich rezerwacji nie będzie już tak wygodne. Wzbogaćmy klasę Kino o odpowiednią metodę:

Funkcja po prostu wypisuje informację o wybranym przez nas miejscu.

Dobrze, miejsca zarezerwowane, obsługa kina kończy przygotowania do seansu a w powietrzu już unosi się zapach popcornu. Pech chciał, że panu Jankowi zepsuł się samochód i niestety nie dotrze na seans na czas. Jedyne co pozostaje to anulować rezerwację. Ehh…tej opcji jeszcze nie mamy. Ale to kwestia chwili. Napisanie metody anuluj_rezerwacje dla klasy Kino będzie bardzo proste. Tym bardziej, że klasa Miejsce już takową posiada. Wystarczy tylko wybrać odpowiednią metodę:

Opcje wyboru są kompletne:

Teraz kino może przyjąć dodatkową osobę na miejsce pana Janka :-)

Oto nasz system w całości:

Właściciel kina już planuje budowę kolejnych sal :-)

Adam Sawicki – programista aplikacji internetowych, obserwator nowych trendów w świecie startup’ów i technologii webowych. Autor kursu C++ dla początkujących www.cpp.jcom.pl.

, , , , , , , , ,