CENTRUM EDUKACJI AKADEMIA SUKCESU Praca semestralna Kierunek: Technik Informatyk Przedmiot: Programowanie Strukturalne i Obiektowe Semestr: III Wykładowca : Agnieszka Wojno Temat: Zaprojektuj klasę Przesyłka, która będzie posiadała następujące atrybuty: imię_odbiorcy, nazwisko_odbiorcy, adres_odbiorcy. Atrybuty te mają nie być ogólnie dostępne, ale będą z nich korzystać inne klasy dziedziczące z klasy Przesyłka. Wybierz odpowiedni rodzaj hermetyzacji tych atrybutów. Następnie utwórz dwie klasy dziedziczące z klasy Przesyłka. Pierwsza to List. Posiada ona następujące atrybuty: cena_znaczka, rodzaj (np. zwykły lub polecony). Druga klasa dziedzicząca z klasy Przesyłka, to Paczka. Klasa ta posiada następujące atrybuty niedostępne ogólnie: nr_paczki, opłata. Dla wszystkich atrybutów klas wybierz najlepsze dla nich typy zmiennych. Utwórz publiczne metody służące do ustawiania wartości atrybutów obiektów oraz do ich wyświetlania. Klasy wyposaż w konstruktory: bezparametryczny i z parametrami. Utwórz po dwa obiekty typu List i Paczka (używając różnych konstruktorów oraz co najmniej jeden obiekt dynamiczny) i wyświetl informacje na ich temat. Łukasz Stocki (Imię i nazwisko Słuchacza) Białystok, 12 Listopad 2011
1 Kod programu: #include <cstdlib> #include <iostream> #include <string> using namespace std; class Przesylka{ protected: string imie_odbiorcy, nazwisko_odbiorcy, adres_odbiorcy; void ustawimieodbiorcy( string imie ){ imie_odbiorcy = imie; void ustawnazwiskoodbiorcy( string nazwisko ){ nazwisko_odbiorcy = nazwisko; void ustawadresodbiorcy( string adres ){ adres_odbiorcy = adres; void ustawprzesylke( string imie, string nazwisko, string adres ){ ustawimieodbiorcy( imie ); ustawnazwiskoodbiorcy( nazwisko ); ustawadresodbiorcy( adres ); void wypiszimieodbiorcy(void){ cout << "Imie odbiorcy: " << imie_odbiorcy << endl; void wypisznazwiskoodbiorcy(void){ cout << "Nazwisko odbiorcy: " << nazwisko_odbiorcy << endl; void wypiszadresodbiorcy(void){ cout << "Adres odbiorcy: " << adres_odbiorcy << endl; void przesylkainfo(void){ wypiszimieodbiorcy(); wypisznazwiskoodbiorcy(); wypiszadresodbiorcy(); Przesylka(){ ustawimieodbiorcy("brak imienia"); ustawnazwiskoodbiorcy("brak nazwiska"); ustawadresodbiorcy("brak adresu"); //konstruktor bez parametrow Przesylka( string imie, string nazwisko, string adres ){ ustawimieodbiorcy( imie ); ustawnazwiskoodbiorcy( nazwisko ); ustawadresodbiorcy( adres ); //konstruktor z parametrami ;//class Przesylka class List:public Przesylka{ private: float cena_znaczka; string rodzaj;
2 void ustawceneznaczka( float nowacena ){ cena_znaczka = nowacena; void ustawrodzajlistu( string rodzajlistu ){ rodzaj = rodzajlistu; void ustawlist( string imie, string nazwisko, string adres, float cena, string rodzaj ){ this->ustawprzesylke( imie, nazwisko, adres ); ustawceneznaczka( cena ); ustawrodzajlistu( rodzaj ); void wypiszceneznaczka( void ){ cout << "Cena znaczka: " << cena_znaczka << endl; void wypiszrodzajlistu( void ){ cout << "Rodzaj listu: " << rodzaj << endl; void listinfo( void ){ this->przesylkainfo(); wypiszceneznaczka(); wypiszrodzajlistu(); List(){ ustawceneznaczka( 3.5 ); ustawrodzajlistu( "zwykly" ); List( string imie, string nazwisko, string adres, float cena, string rodzaj ){ ustawlist( imie, nazwisko, adres, cena, rodzaj ); ;//class List class Paczka:public Przesylka{ private: int nr_paczki; float oplata; void ustawnrpaczki( int nowynumerpaczki ){ nr_paczki = nowynumerpaczki; void ustawoplatepaczki( float oplata ){ this->oplata = oplata; void ustawpaczke( string imie, string nazwisko, string adres, int nrpaczki, float oplata ){ this->ustawprzesylke( imie, nazwisko, adres ); ustawnrpaczki( nrpaczki ); ustawoplatepaczki( oplata ); void wypisznrpaczaki(void){ cout << "Nr paczki: " << nr_paczki << endl; void wypiszoplatepaczki(void){ cout << "Oplata paczki: " << oplata << endl; void infopaczka(void){
3 this->przesylkainfo(); wypisznrpaczaki(); wypiszoplatepaczki(); Paczka(){ ustawnrpaczki( 1234 ); ustawoplatepaczki( 5.50 ); Paczka( string imie, string nazwisko, string adres, int nrpaczki, float oplata ){ ustawpaczke( imie, nazwisko, adres, nrpaczki, oplata ); ;//class Paczka void linia( void ){ cout << endl; int main(int argc, char *argv[]){ List list1; list1.listinfo(); List list2; list2.ustawlist( "Jan", "Kowalski", "ul. Jana Kowalskiego 68", 2.56, "polecony" ); list2.listinfo(); List* list3 = new List( "Adam", "Adamoski", "ul. Adama Adamoskiego 11", 3.50, "zwykly" ); list3->listinfo(); delete list3; Paczka paczka1; paczka1.infopaczka(); Paczka paczka2; paczka2.ustawpaczke( "Anna", "Annowska", "ul. Anny Annowskiej 13", 131313, 13.13 ); paczka2.infopaczka(); Paczka* paczka3 = new Paczka( "Anna", "Annowska", "ul. Anny Annowskiej 13", 131313, 13.13 ); paczka3->infopaczka(); delete paczka3; return 0; //main
Wynik działania programu: 4