Programowanie obiektowe w C++ – Piszemy system rezerwacji biletów w kinie cz. I

Gościnie autorem wpisu jest Adam Sawicki.

Znamy podstawy C++, wiemy czym są klasy. Można przystąpić do wykorzystania naszej wiedzy pisząc system, który sprzedamy za niebotyczną sumę pieniędzy :-) Pomysłów jest wiele – wybierzmy jeden. Załóżmy, że zgłasza się do nas właściciel znanej sieci kin „Singlekino.pl” i prosi o oprogramowanie ułatwiające zarządzanie jego firmą. Potrzebny będzie system rezerwacji miejsc, aby nikt nie musiał stać z powodu ich niedostępności i zasłaniać film innym.

Fot: lmonk72, CC0 Public Domain.

Fot: lmonk72, CC0 Public Domain.

Podstawowymi elementami systemu będą opcje umożliwiające dodanie i usuwanie rezerwacji, składającej się z imienia, nazwiska i numeru miejsca. Warto mieć możliwość sprawdzenia, czy miejsce o które pyta klient jest wolne. Oczywiście nieopisaną pomoc dla osoby przyjmującej rezerwacje będą listy z podziałem na wolne i zajęte miejsca oraz lista zbiorcza (łącząca dwie poprzednie).

Jeszcze raz przyjrzyjmy się wymaganiom projektu:

  • dodawanie rezerwacji w formie: imię, nazwisko i numer miejsca,
  • usuwanie wybranej rezerwacji,
  • sprawdzanie, czy wybrane miejsce jest jeszcze wolne,
  • lista wszystkich miejsc,
  • lista wolnych miejsc,
  • lista zarezerwowanych miejsc.

Widzimy, że interfejs użytkownika będzie stanowić zgrabne menu z sześcioma opcjami do wyboru i wyjściem z systemu. Nie tracąc czasu przygotujmy sobie „szablon” programu, który będziemy rozbudowywać:

Powyższy kod nie wymaga zbyt wielu wyjaśnień. Program wyświetla menu i czeka na wciśnięcie dowolnego przycisku (funkcja getchar(), dołączymy tutaj jeszcze bibliotekę stdio.h, która obsługuję tą funkcję). Dopiszmy obsługę naszego wyboru. W tym celu przydatna okaże się funkcja while, oraz instrukcja switch. Uzupełnijmy powyższy kod:

Do tej pory również nie zostało napisane nic co mogłoby powalić na nogi. W pętli while sprawdzana jest wartość zmiennej znak. Jeżeli jest ona różna od ‚7‚ przechodzimy do funkcji switch i wykonujemy odpowiednią instrukcję w zależności od wyboru. Zastanówmy się nad uczynieniem programu bardziej użytecznym.

W jaki sposób wykorzystać obiekty? Podstawowym elementem będzie rezerwacja stanowiąca imię, nazwisko i numer miejsca. Przyda się również zmienna wskazująca czy miejsce jest zajęte. Nic nie stoi na przeszkodzie by uczynić z niej obiekt. Spróbujmy to zrobić:

Możemy założyć, że liczba miejsc w kinie jest stała. Jest to bardzo ważna informacja, mianowicie wiemy, że liczba obiektów miejsce będzie taka sama przez cały czas działania programu. W zależności czy wybrane miejsce będzie zarezerwowane czy nie, zmieniać się będą zmienne imię, nazwisko i zarezerwowane. Numer zostanie przypisany podczas tworzenia obiektu.

Rozbudujmy nasz obiekt o odpowiedni konstruktor. Pierwszy z nich będzie domyślny, drugi natomiast umożliwi utworzenie konkretnego miejsca z rezerwacją

Chcąc użyć funkcji strcpy wbudowanej w C++ bezpiecznie jest uaktualnić naszą listę bibliotek o string.h:

Konstruktor przeładowany:

Umieszczamy je w klasie po linii:

Skoro mamy już konstruktory to napiszmy wewnętrzną, publiczną funkcję, która umożliwi rezerwację miejsca. Umieszczamy ją w klasie tuż po konstruktorach. Potrzebne będą imię i nazwisko zainteresowanej osoby.

Jeżeli ktoś wybrał to miejsce na seans to równie dobrze będzie mógł z niego zrezygnować. Z pomocą przychodzi funkcja anulująca rezerwację.

To już jest coś :-) Aby zobaczyć co „siedzi” w obiekcie Miejsce napiszmy funkcję wypisz, informującą nas o aktualnym jego stanie.

Jesteśmy gotowi to przeprowadzenia małego testu. W funkcji głównej (main):

wykonamy sprawdzenie klasy. Dodajmy zmienną o nazwie rezerwacja typu Miejsce:

Sprawdźmy co siedzi w środku:

Odpalmy program i widzimy, że obiekt rezerwacja to wolne miejsce o numerze 0.

Spróbujmy je zarezerwować:

Po dokonaniu rezerwacji znamy imię i nazwisko zainteresowanej osoby.

Na koniec anulujmy rezerwację:

Takim sposobem miejsce o numerze 0 jest z powrotem wolne.

Całość programu wygląda następująco:

Co zrobimy następnie? Obecnie mamy tylko jedno miejsce. Trudno byłoby utrzymać takie kino :-) Należy wybrać liczbę miejsc, dopilnować aby ich numery się nie powtarzały i umożliwić rezerwację zgodnie z życzeniem klienta.

Rozbudujemy klasę Miejsce oraz zbudujemy kolejną, nadrzędną o nazwie Kino. Zapraszam do następnego artykułu :-)

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.

, , , , , , , , , ,

  • amazingTesla

    jak wywołać metodę wyswietl_menu_glowne w Javie?

    • To nie jest metoda tylko funkcja. W Javie nie ma funkcji tylko są metody więc najpierw trzeba zrobić obiekt danej klasy. Przykład:

      public class Main {

      void wypisz() {
      System.out.print(„aaa”);
      }

      public static void main(String[] args) {
      Main m = new Main();
      m.wypisz(); //”aaa”
      }
      }