Klasa CCar
Transkrypt
Klasa CCar
Systemy informatyczne Zad. (CCar) Napisać program umożliwiający przechowywanie i wyświetlanie na ekranie obiektów reprezentujących samochód, w formacie ustalonym przez użytkownika. Zakłada się implementację klasy CCar, w skład której wchodzić będą następujące dane, funkcje składowe oraz funkcje operatorowe: sekcja publiczna CCar – konstruktor domyślny, bezparametrowy; prywatnym danym klasy license_plate_no, make, model, year nadawane są wartości domyślne równe odpowiednio: ″″ (pusty łańcuch znaków), 0, 0, 1990, co odpowiada dla braku danych dotyczących numeru rejestracyjnego, marki i modelu oraz dla roku produkcji 1990; odpowiednie wartości nadawane są przy wykorzystaniu funkcji SetCar; CCar – konstruktor przeciążony zawierający inicjatory odpowiadające kolejno dla numeru rejestracyjnego, marki i modelu oraz dla roku produkcji samochodu; pozwala on na nadanie konkretnych wartości danym prywatnym license_plate_no, make, model, year klasy na etapie tworzenia klasy; odpowiednie wartości nadawane są przy wykorzystaniu funkcji SetCar; ~ CCar – destruktor; SetLicensePlateNo – funkcja dostępu do danej prywatnej license_plate_no, powodująca nadanie/zmianę jej dotychczasowej wartości; SetMake – funkcja dostępu do danej prywatnej make, powodująca nadanie/zmianę jej dotychczasowej wartości; przed wykonaniem operacji sprawdzana jest wartość parametru inicjującego, który powinien mieścić się w dopuszczalnym zakresie, tj. 0 ≤ make ≤ 4; jeżeli tak nie jest przyjmujemy, że make = 0; SetModel – funkcja dostępu do danej prywatnej model, powodująca nadanie/zmianę jej dotychczasowej wartości; przed wykonaniem operacji sprawdzana jest wartość parametru inicjującego, który powinien mieścić się w dopuszczalnym zakresie, tj. 0 ≤ model ≤ 2; jeżeli tak nie jest przyjmujemy, że model = 0; ponadto jeżeli dana prywatna make = 0, wówczas również przyjmujemy, że model = 0; SetYear – funkcja dostępu do danej prywatnej year, powodująca nadanie/zmianę jej dotychczasowej wartości; zakładamy, że: 1990 ≤ year ≤ 2020; SetCar – funkcja dostępu do danych prywatnych license_plate_no, make, model, year, powodująca nadanie/zmianę ich dotychczasowych wartości; przed wykonaniem operacji sprawdzane są wartości parametrów inicjujących, które powinny mieść się w dopuszczalnych zakresach (zob. założenia funkcji SetLicensePlateNo, SetMake, SetModel, SetYear); GetLicensePlateNo – funkcja dostępu do danej prywatnej license_plate_no, zwracająca jej bieżącą wartość; GetMake – funkcja dostępu do danej prywatnej make, zwracająca jej bieżącą wartość; GetModel – funkcja dostępu do danej prywatnej model, zwracająca jej bieżącą wartość; GetYear – funkcja dostępu do danej prywatnej year, zwracająca jej bieżącą wartość; PrintCar – funkcja drukująca (wypisująca na ekranie) informacje o samochodzie w następującym formacie: Numer rejestracyjny: Marka: wartość pola license_plate_no „Brak” (jeżeli make = 0), lub „Fiat” (jeżeli make = 1), lub „Volkswagen” (jeżeli make = 2), lub „Opel” (jeżeli make = 3), lub „Peugeot” (jeżeli make = 4); 22 Systemy informatyczne Model: Rok produkcji: „Brak” (jeżeli make = 0 lub jeżeli model = 0), lub „Punto” lub „Bravo” (gdy make = 1; oraz model = 1 lub model = 2), lub „Golf” lub „Passat” (gdy make = 2; oraz model = 1 lub model = 2), lub „Corsa” lub „Astra” (gdy make = 3; oraz model = 1 lub model = 2), lub „207” lub „5008” (gdy make = 4; oraz model = 1 lub model = 2); wartość pola year; sekcja prywatna license_plate_no – dana typu łańcuchowego string reprezentująca numer rejestracyjny samochodu; make – dana typu całkowitego reprezentująca markę samochodu; zakładamy, że kolejne liczby całkowite z zakresu 0 ≤ make ≤ 4 odpowiadać będą następującym markom: 0 – brak marki, 1 – Fiat, 2 – Volkswagen, 3 – Opel, 4 – Peugeot; model – dana typu całkowitego reprezentująca model samochodu danej marki; zakładamy, że kolejne liczby całkowite z zakresu 0 ≤ model ≤ 2 odpowiadać będą następującym modelom: 0 – brak modelu (niezależnie od marki samochodu); 1 – Punto, lub 2 – Bravo (jeżeli make = 1; samochody Fiat); 1 – Golf, lub 2 – Passat (jeżeli make = 2; samochody Volkswagen); 1 – Corsa, lub 2 – Astra (jeżeli make = 3; samochody Opel); 1 – 207, lub 2 – 5008 (jeżeli make = 4; samochody Peugeot); year – dana typu całkowitego reprezentująca rok produkcji samochodu; zakładamy, że: 1990 ≤ year ≤ 2020; funkcje operatorowe klasy zadeklarowane jako funkcje zaprzyjaźnione klasy CCar operator << przeciążenie operatora wstawiania do strumienia reprezentowanego przez obiekt typu ostream; przyjmujemy, że lewym operandem jest referencja do obiektu typu ostream, a prawym obiekt klasy CCar; wykorzystanie operatora << w programie umożliwi wypisanie na ekranie informacji o samochodzie, co odpowiada wykonaniu funkcji PrintCar; operator >> przeciążenie operatora pobrania ze strumienia reprezentowanego przez obiekt typu istream; przyjmujemy, że lewym operandem jest referencja do obiektu typu istream, a prawym obiekt klasy CCar; wykorzystanie operatora >> w programie umożliwi wczytywanie danych do obiektu klasy CCar w kolejności license_plate_no, make, model, year; przed podstawieniem nowych wartości danym składowym klasy wykonane zostaje sprawdzenie czy mieszczą się one w dopuszczalnych zakresach (zob. funkcja SetCar); operator == porównanie dwóch samochodów reprezentowanych przez obiekty klasy CCar; jeżeli numery rejestracyjne samochodów są sobie równe, wynikiem jest wartość logiczna true; w przeciwnym razie – false; operator != porównanie dwóch samochodów reprezentowanych przez obiekty klasy CCar; jeżeli numery rejestracyjne samochodów są sobie równe, wynikiem jest wartość logiczna false; w przeciwnym razie – true; 23