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

Podobne dokumenty