Projekty zaliczeniowe z obiektówki
Transkrypt
Projekty zaliczeniowe z obiektówki
Projekty zaliczeniowe z obiektówki 25 maja 2012 1 Przykład klas: Wiedząc, że deklarowanie typu rekordowego w języku C/ C++ wygląda następująco: #include <cstdlib> #include <iostream> #include <stdlib.h> #define PI 3.14 using namespace std; class Kwadrat //Klasa Kwadrat { public: Kwadrat(); Kwadrat( float bok ); void wypiszPowierzchnie(); private: float zmienna_bok; }; Kwadrat::Kwadrat() : zmienna_bok(0) //Konstruktory dla kwadratu { } Kwadrat::Kwadrat(float bok) : zmienna_bok(bok) { } void Kwadrat::wypiszPowierzchnie() { 1 cout << "\nPole kwadratu o boku " << zmienna_bok << " wynosi: " << zmienna_bok * zmienna_bok << endl; cout << "Natomiast obwod wynosi: " << 4 * zmienna_bok << endl; cout << endl; } /********************************************/ //Klasa Prostokat class Prostokat { public: Prostokat(); Prostokat( float bok_1, float bok_2 ); void wypiszPowierzchnie(); private: float zmienna_bok_1; float zmienna_bok_2; }; Prostokat::Prostokat() : zmienna_bok_1(0), zmienna_bok_2(0) //Konstruktory dla prostokata { } Prostokat::Prostokat(float bok_1, float bok_2) : zmienna_bok_1(bok_1), zmienna_bok_2(bok_2) { } void Prostokat::wypiszPowierzchnie() { cout << "\nPole Prostokata o bokach " << zmienna_bok_1 << ", " << zmienna_bok_2<< " wynosi: " << zmienna_bok_1 * zmienna_bok_2 << endl; cout << "Natomiast Obwod wynosi: " << ( 2 * zmienna_bok_1 ) + ( 2 * zmienna_bok_2 ) << endl; cout << endl; } /********************************************/ //Klasa Kolo class Kolo { public: 2 Kolo(); Kolo( float promien); void wypiszPowierzchnie(); private: float zmienna_promien; }; Kolo::Kolo() : zmienna_promien(0) //Konstruktory dla kola { } Kolo::Kolo(float promien) : zmienna_promien(promien) { } void Kolo::wypiszPowierzchnie() { cout << "\nPole kola o promieniu " << zmienna_promien << " wynosi: " << PI * zmienna_promien * zmienna_promien << endl; cout << "Natomiast Obwod wynosi: " << 2 * PI * zmienna_promien << endl; cout << endl; } /********************************************/ void void void void void wyswietl_menu(); czysc_bufor(); oblicz_kwadrat(); oblicz_prostokat(); oblicz_kolo(); int main() { char klawisz; do { wyswietl_menu(); cin >> klawisz; switch( klawisz ) { 3 case ’1’ : oblicz_kwadrat(); break; case ’2’ : oblicz_prostokat(); break; case ’3’ : oblicz_kolo(); break; default : if( klawisz != ’q’ ) putchar( ’\a’ ); break; } } while ( klawisz != ’q’ ); return EXIT_SUCCESS; } /*******************************************/ //Funkcja wyswietl menu void wyswietl_menu() { system("cls"); cout cout cout cout << << << << "Obliczam parametry figur plaskich..." << endl; endl; "1. Kwadrat \n2. Prostokat \n3. Kolo"; "\n\nWybierz numer figury lub (q)uit aby zakonczyc: "; } /*******************************************/ void oblicz_kwadrat() //Funkcja oblicz dla kwadratu { system("cls"); float bok; cout << "Obliczenia dla kwadratu" << endl; cout << "Podaj dlugosc boku: "; cin >> bok; Kwadrat kwadratura(bok); kwadratura.wypiszPowierzchnie(); system("PAUSE"); } /*******************************************/ void oblicz_prostokat() //Funkcja oblicz dla kwadratu { 4 system("cls"); float bok_1, bok_2; cout << "Obliczenia dla prostokata" << endl; cout << "Podaj dlugosc pierwszego boku: "; cin >> bok_1; cout << "Podaj dlugosc drugiego boku: "; cin >> bok_2; Prostokat Prostokatowanie(bok_1, bok_2); Prostokatowanie.wypiszPowierzchnie(); system("PAUSE"); } /*******************************************/ //Funkcja oblicz dla kola void oblicz_kolo() { system("cls"); float promien; cout << "Obliczenia dla kola" << endl; cout << "Podaj promien kola: "; cin >> promien; Kolo Kolowanie(promien); Kolowanie.wypiszPowierzchnie(); system("PAUSE"); } /*******************************************/ 2 Zadanie do samodzielnego wykonania Zbuduj hierarchię klas dla pojęć i obiektów określonych w jednym z poniższych punktów. Należy zidentyfikować odpowiednie klasy, określić, które klasy są pochodnymi, jaka jest nadrzędna klasa w hierarchii. Dla każdej klasy zaproponuj przykładowe pola (oraz funkcje składowe) oraz zdefiniuj: • konstruktor domyślny, • konstruktor ogólny, • konstruktor rzutujący, • przeciążony operator przypisania. 5 W każdej klasie powinna znaleźć się również funkcja putClassN ame wyprowadzająca do strumienia cout nazwę klasy. Uwaga, należy zbudować hierarchię klas tak, by odwołanie: $Klasa\_bazowa * p$; $p = \and jakiś\_obiekt\_klasy\_pochodnej;$ p->putClassName(); spowodowało wyprowadzenie do cout nazwy klasy obiektu wskazywanego przez p, a nie nazwę klasy Klasa bazowa. Projekt na być oddany w wersji papierowej, ma zwierać wydruk hierarchii klas oraz prostego programu pokazującego sposób ich wykorzystania. Do projektu powinien zostać dołączony kod źródłowy (powinien się zmieścić na dyskietce). Uwaga: w niektórych przypadkach może występować dziedziczenie wielobazowe. Lista dziedzin, dla których należy zaprojektować odpowiednią hierarchię klas: 1. Rower, hulajnoga, motorower, motocykl, samochód, ciężarówka, autobus. 2. Mucha, ptak, lotnia, śmigłowiec, samolot, bombowiec, samolot pasażerski. 3. Muzyka klasyczna, jazz, jazz nowoczesny, jazz nowoorleański, rock, heavy metal, punk rock, pop, techno, drum’n’bass. 4. Woda mineralna gazowana, niegazowana, piwo, piwo ciemne, piwo jasne, sok, napój gazowany i niegazowany, wino, szampan, żubrówka. 5. Silnik spalinowy, silnik elektryczny, silnik czterosuwowy, silnik dwusuwowy, silnik Wankla, silnik hybrydowy. 6. Narta zjazdowa, narta slalomowa, narta gigantowa, narta biegowa, narta do skoków, narta wodna. 7. Zwierze mięsożerne, nie mięsożerne, ssak, ryba, owad, wieloryb, łosoś, mrówka, lew, jeleń. 8. Pracownik etatowy, pracownik kontraktowy, osoba współpracująca, pełnoetatowiec, półetatowiec. 9. Komputer PC, stacja robocza, komputer przenośny, palmtop, superkomputer, serwer sieciowy. 10. Łódka rybacka, kuter rybacki, łódź podwodna, ścigacz, prom, kuter torpedowy, pancernik. 11. Proza, poezja, epika, liryka, felieton, reportaż, fraszka, opowiadanie, powieść. 12. Rower górski, rower dowhhill, rower enduro, rower trekkingowy, rower szosowy, rower crossowy. 13. Lekkoatleta, piłkarz, kolarz, koszykarz, biegacz, dyskobol, oszczepnik, zapaśnik, karateka. 6 14. Młotek, wiertarka, pilarka, kleszcze, śrubokręt, pilnik, piła, pędzel, szpachla, kielnia. 7