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