Programowanie Obiektowew języku C++ Zadania L8 Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki Stosowanej i Modelowania 2 Uniwersytet im. Jana Kochanowskiego w Kielcach Wydział Matematyczno-Przyrodnmiczy Instytut Fizyki Zakład Informatyki Styczeń 2019 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 1 / 14
Spis treści 1 Zadanie L8 2 Podpowiedzi do zadań L8 3 Przykładowe rozwiązanie zadania L8 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 2 / 14
Zadanie L8 Zdefiniować klasę zwierzę zawierającą: w zakresie chronionym ( protected ) dwa pola przechowujące: masę oraz wiek zwierzęcia metodę Patrz wypisującą tekst: Patrze przed siebie, item metodę Oddychaj wypisującą tekst: Zyje, wiec oddycham Zdefiniować klasę ryba dziedziczącą z klasy zwierze i zawierającą w zakresie publicznym: metodę Plyn wypisującą tekst: Plyne, bo lubie plywac Zdefiniować klasę ssak dziedziczącą z klasy zwierze i zawierającą w zakresie publicznym: metodę Biegnij wypisującą tekst: Biegne, bo lubie biegac Zdefiniować klasę ptak dziedziczącą z klasy zwierze i zawierającą w zakresie publicznym: metodę Frun wypisującą tekst: Fruwam, bo lubie fruwac Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 3 / 14
Zadanie L8 Zdefiniować klasę pies dziedziczącą z klasy ssak zawierającą: w zakresie publicznym dwa pola przechowujące: rasę psa będącą elementem typu wyliczeniowego RasaPsa (Owczarek, Dog, Pudel, Szpic, Bernardyn) oraz kolor sierści zwierzęcia będącą elementem typu wyliczeniowego Umaszczenie (Czarny, Bialy, Rudy, Szary), metodę Aportuj wypisującą tekst: Wlasnie aportuje, metodę Szczekaj wypisującą tekst: Hau, Hau, Zdefiniować funkcje lub metody pozwalające na zapisywanie i odczytywanie pól chronionych, Zdefiniować przeciążenia operatora << Zaprojektowana hierarchia klas powinna umożliwić wykonanie następującego programu i wygenerowanie strumienia wyjściowego przedstawionych na kolejnych dwóch stonach. Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 4 / 14
Zadanie L8 int main(){ Ryba Losos; // ----- ryba ----- Losos.Wiek(2); Losos.Masa(3.5); cout << Losos; Losos.Oddychaj(); Losos.Plyn(); Ptak Wrobel; // ----- ptak ----- Wrobel.Wiek(2); Wrobel.Masa(0.05f); cout << Wrobel; Wrobel.Patrz(); Wrobel.Frun(); Pies Azor; // ----- pies ----- Azor.Wiek(1); Azor.Masa(12.); Azor.Rasa(Bernardyn); Azor.KolorSiersci(Szary); cout << Azor; Azor.Patrz(); Azor.Oddychaj(); Azor.Aportuj(); Azor.Szczekaj(); } return 0; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 5 / 14
Zadanie L8 --- Prezentuje rybe --- Wiek w latach: 2 Masa w kg: 3.5 Zyje, wiec oddycham Plyne, bo lubie plywac --- Prezentuje ptaka --- Wiek w latach: 2 Masa w kg: 0.05 Patrze przed siebie Fruwam, bo lubie fruwac --- Prezentuje psa --- Wiek w latach: 1 Masa w kg: 12 Rasa: 4 Umaszczenie: 3 Patrze przed siebie Zyje, wiec oddycham Wlasnie aportuje Hau, Hau Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 6 / 14
Spis treści 1 Zadanie L8 2 Podpowiedzi do zadań L8 3 Przykładowe rozwiązanie zadania L8 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 7 / 14
Podpowiedzi do zadań L8 Podpowiedzi nie są konieczne - problem wyjaśniono w treści zadania Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 8 / 14
Spis treści 1 Zadanie L8 2 Podpowiedzi do zadań L8 3 Przykładowe rozwiązanie zadania L8 Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 9 / 14
Przykładowe rozwiązanie zadania L8 #include <iostream> using namespace std; enum RasaPsa {Owczarek, Dog, Pudel, Szpic, Bernardyn}; enum Umaszczenie {Czarny, Bialy, Rudy, Szary}; class Zwierze { protected: double masa; unsigned wiek; public: Zwierze(): masa(0.), wiek(0) {} void Patrz() {cout << "Patrze przed siebie" << endl;} void Oddychaj() {cout << "Zyje, wiec oddycham" << endl;} double Masa() const {return masa;} void Masa(double masazw) {masa = masazw;} unsigned Wiek() const {return wiek;} void Wiek(unsigned wiekzw) {wiek = wiekzw;} }; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 10 / 14
Przykładowe rozwiązanie zadania L8 class Ryba : public Zwierze { public: void Plyn() {cout << "Plyne, bo lubie plywac" << endl;} }; class Ssak : public Zwierze { public: void Biegnij(){cout << "Biegne, bo lubie biegac" << endl;} }; class Ptak : public Zwierze { public: void Frun() {cout << "Fruwam, bo lubie fruwac" << endl;} }; class Pies : public Ssak { protected: RasaPsa rasa; Umaszczenie kolorsiersci; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 11 / 14
Przykładowe rozwiązanie zadania L8 public: void Aportuj() {cout << "Wlasnie aportuje" << endl;} void Szczekaj() {cout << "Hau, Hau" << endl;} RasaPsa Rasa() const {return rasa;} void Rasa(RasaPsa rasaps) {rasa = rasaps;} Umaszczenie KolorSiersci() const {return kolorsiersci;} void KolorSiersci(Umaszczenie kolorps) { kolorsiersci = kolorps;} }; ostream& operator<<(ostream& Strum, Ryba& ryba){ Strum << "--- Prezentuje rybe ---" << endl; Strum << "Wiek w latach: " << ryba.wiek() << endl; Strum << " Masa w kg: " << ryba.masa() << endl; return Strum; } Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 12 / 14
Przykładowe rozwiązanie zadania L8 ostream& operator<<(ostream& Strum, Ptak& ptak){ Strum << "--- Prezentuje ptaka ---" << endl; Strum << "Wiek w latach: " << ptak.wiek() << endl; Strum << " Masa w kg: " << ptak.masa() << endl; return Strum; } ostream& operator<<(ostream& Strum, Pies& pies){ Strum << "--- Prezentuje psa ---" << endl; Strum << "Wiek w latach: " << pies.wiek() << endl; Strum << " Masa w kg: " << pies.masa() << endl; Strum << " Rasa: " << pies.rasa() << endl; Strum << " Umaszczenie: " << pies.kolorsiersci() << endl; return Strum; } Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 13 / 14
Przykładowe rozwiązanie zadania L8 int main(){ Ryba Losos; // ----- ryba ----- Losos.Wiek(2); Losos.Masa(3.5); cout << Losos; Losos.Oddychaj(); Losos.Plyn(); Ptak Wrobel; // ----- ptak ----- Wrobel.Wiek(2); Wrobel.Masa(0.05f); cout << Wrobel; Wrobel.Patrz(); Wrobel.Frun(); Pies Azor; // ----- pies ----- Azor.Wiek(1); Azor.Masa(12.); Azor.Rasa(Bernardyn); Azor.KolorSiersci(Szary); cout << Azor; Azor.Patrz(); Azor.Oddychaj(); Azor.Aportuj(); Azor.Szczekaj(); } return 0; Mirosław Głowacki (AGH, UJK) Programowanie Obiektowe 2019 14 / 14