Klasa CPerson

Transkrypt

Klasa CPerson
Systemy informatyczne
Zad. (CPerson)
Napisać program umożliwiający przechowywanie i wyświetlanie na ekranie obiektów reprezentujących osobę,
w formacie ustalonym przez użytkownika. Zakłada się implementację klasy CPerson, w skład której wchodzić będą
następujące dane, funkcje składowe oraz funkcje operatorowe:
sekcja publiczna
CPerson – konstruktor domyślny, bezparametrowy; prywatnym danym klasy name, surname, age, plec, education
nadawane są wartości domyślne równe odpowiednio: ″″ (pusty łańcuch znaków), ″″ (pusty łańcuch znaków), 0,
′M′, 0, co odpowiada dla braku danych dotyczących imienia i nazwiska, wiekowi 0 lat, płci „mężczyzna” oraz
brakowi wykształcenia; odpowiednie wartości nadawane są przy wykorzystaniu funkcji SetPerson;
CPerson – konstruktor przeciążony zawierający inicjatory odpowiadające kolejno dla imienia, nazwiska, wieku,
płci i edukacji; pozwala on na nadanie konkretnych wartości danym prywatnym name, surname, age, plec,
education klasy na etapie tworzenia klasy; odpowiednie wartości nadawane są przy wykorzystaniu funkcji
SetPerson;
~ CPerson – destruktor;
SetName – funkcja dostępu do danej prywatnej name, powodująca nadanie/zmianę jej dotychczasowej wartości;
SetSurname – funkcja dostępu do danej prywatnej surname, powodująca nadanie/zmianę jej dotychczasowej
wartości;
SetAge – funkcja dostępu do danej prywatnej age, powodująca nadanie/zmianę jej dotychczasowej wartości; przed
wykonaniem operacji sprawdzana jest wartość parametru inicjującego, który powinien mieść się w dopuszczalnym
zakresie, tj. 0 ≤ age ≤ 150; jeżeli tak nie jest przyjmujemy, że age = 0;
SetPlec– funkcja dostępu do danej prywatnej plec, powodująca nadanie/zmianę jej dotychczasowej wartości;
przed wykonaniem operacji sprawdzana jest wartość parametru inicjującego (typu znakowego), który powinien
być równy odpowiednio: ′M′ lub ′m′ w przypadku mężczyzny – wówczas dla danej plec nadawana jest wartość
logiczna false, oraz ′K′ lub ′k′ w przypadku kobiety – wówczas dla danej plec nadawana jest wartość logiczna true;
jeżeli dana inicjująca ma inną niż wymienione powyżej wartość znakową wówczas przyjmujemy, że osoba jest
mężczyzną, tj. przyjmujemy plec = false;
SetEducation – funkcja dostępu do danej prywatnej education, 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 ≤ education ≤ 4, co odpowiada następującym poziomom wykształcenia: 0 – brak
wykształcenia, 1 – podstawowe, 2 – średnie, 3 – wyższe, 4 – podyplomowe; jeżeli tak nie jest przyjmujemy, że
education = 0;
SetPerson – funkcja dostępu do danych prywatnych name, surname, age, plec, education, 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 SetName, SetSurname,
SetAge, SetPlec, SetEducation);
GetName – funkcja dostępu do danej prywatnej name, zwracająca jej bieżącą wartość;
GetSurname – funkcja dostępu do danej prywatnej surname, zwracająca jej bieżącą wartość;
GetAge – funkcja dostępu do danej prywatnej age, zwracająca jej bieżącą wartość;
GetPlec – funkcja dostępu do danej prywatnej plec, zwracająca wartość typu znakowego równą odpowiednio: ′M′
(jeżeli plec = false) lub ′K′ (jeżeli plec = true);
GetEduation – funkcja dostępu do danej prywatnej education, zwracająca jej bieżącą wartość;
13
Systemy informatyczne
PrintPerson – funkcja drukująca (wypisująca na ekranie) informacje o osobie w następującym formacie:
Imię:
Nazwisko:
Wiek:
Płeć:
Wykształcenie:
wartość pola name
wartość pola surname
wartość pola age
„kobieta” (jeżeli plec = true) lub „mężczyzna” (jeżeli plec = false)
„brak wykształcenia” (jeżeli education = 0), lub
„podstawowe” (jeżeli education = 1), lub
„średnie” (jeżeli education = 2), lub
„wyższe” (jeżeli education = 3), lub
„podyplomowe” (jeżeli education = 4);
sekcja prywatna
name, surname – dane typu łańcuchowego string reprezentujące odpowiednio imię i nazwisko osoby;
age – dana typu całkowitego reprezentująca wiek osoby; zakładamy, że: 0 ≤ age ≤ 150;
plec – dana typu logicznego bool reprezentująca płeć osoby; w przypadku, gdy osobą jest kobieta przyjmujemy
plec = true, a gdy osobą jest mężczyzna wówczas plec = false;
education – dana typu całkowitego reprezentująca wykształcenie osoby; zakładamy, że kolejne liczby całkowite
z zakresu 0 ≤ education ≤ 4 odpowiadać będą następującym poziomom wykształcenia:
0 – brak wykształcenia, 1 – podstawowe, 2 – średnie, 3 – wyższe, 4 – podyplomowe;
funkcje operatorowe klasy
zadeklarowane jako funkcje zaprzyjaźnione klasy CPerson
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 CPerson;
wykorzystanie operatora << w programie umożliwi wypisanie na ekranie informacji o osobie, co odpowiada
wykonaniu funkcji PrintPerson;
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 CPerson;
wykorzystanie operatora >> w programie umożliwi wczytywanie danych do obiektu klasy CPerson w kolejności
name, surname, age, plec, education; przed podstawieniem nowych wartości danym składowym klasy wykonane
zostaje sprawdzenie czy mieszczą się one w dopuszczalnych zakresach (zob. funkcja SetPerson);
operator == porównanie dwóch osób reprezentowanych przez obiekty klasy CPerson; jeżeli imię, nazwisko,
wiek, płeć i wykształcenie są sobie równe, wynikiem jest wartość logiczna true; w przeciwnym razie – false;
operator != porównanie dwóch osób reprezentowanych przez obiekty klasy CPerson; jeżeli imię, nazwisko,
wiek, płeć i wykształcenie są sobie równe, wynikiem jest wartość logiczna false; w przeciwnym razie – true;
14