Laboratorium 10, 19.12.2012 Należy utworzyć klasy, których obiekty
Transkrypt
Laboratorium 10, 19.12.2012 Należy utworzyć klasy, których obiekty
Laboratorium 10, 19.12.2012 Należy utworzyć klasy, których obiekty będą reprezentować rożne rodzaje figur: trójkąt równoboczny, kwadrat oraz okrąg. Należy również utworzyć klasę punkt, przechowującą współrzędne x, y punktu w układzie współrzędnych. Pola klas powinny być niepubliczne. Klasa punkt powinna zawierać pola x i y do przechowywania współrzędnych, odpowiednie konstruktory i metody get. Klasy trójkąt, kwadrat i okrąg powinny dziedziczyć z abstrakcyjne klasy figura. Klasa figura powinna zawierać dwa pola: tablicę obiektów klasy punkt (pamięć na tablicę powinna być przydzielana dynamicznie) i pole przechowujące ilość punktów podawanych dla danej figury. Klasa kwadrat powinna dodatkowo zawierać pole do przechowywania długości boku, klasa trójkąt pole do przechowywania długości boku i wysokości trójkąta, klasa okrąg pole do przechowujące promień. Klasy powinny zawierać odpowiednie metody get (należy kierować się przy ich pisaniu podaną niżej funkcją getFiguraInfo(figura &)), odpowiednie funkcję powinny być wirtualne. Klasy powinny również zawierać potrzebne konstruktory oraz destruktor, jeśli jest potrzebny. Konstruktory przyjmują tablicę punktów ze współrzędnymi i ilość punktów. Dla trójkąta będzie to tablica trzech punktów - współrzędne wierzchołków, dla kwadratu tablica czterech punktów współrzędne wierzchołków, dla okręgu tablica dwóch punktów - współrzędna środka okręgu i dowolnego punktu na obwodzie. W konstruktorach obliczamy wartości pól klasy, np. dla okręgu wartość promienia. Plik main.cpp : void getFiguraInfo(figura &fig) { cout << fig.getTypFigury() << endl; // zwraca typ figury, np. “okrag” cout << "Ilosc puntow: " << fig.getIloscPunktow() << endl; // zwraca ilosc punktow jaka podajemy fig.getWspolrzedne(); // wypisuje wspolrzedne podanych punktow fig.getInfo(); // wypisuje w zaleznosci od rodzaju figury, dla kola promien, dla trojkata dlugosc boku i wysokosc, dla kwadratu dlugosc boku cout << "pole: " << fig.getPole() << endl; // zwraca pole figury cout << "obwod: " << fig.getObwod() << endl; // zwraca obwod figury cout << "_____________________" << endl; } int main() { punkt punkt1(1,0); punkt punkt2(2,2); punkt punkt3(5,0); punkt punkt4(3,2*sqrt(3)); punkt punkt5(1,4); punkt punkt6(5,4); punkt tabOkrag[2] = {punkt1, punkt2}; punkt tabTrojkat[3] = {punkt1, punkt3, punkt4}; punkt tabKwadrat[4] = {punkt1, punkt3, punkt5, punkt6}; okrag ok(tabOkrag,2); getFiguraInfo(ok); trojkat tr(tabTrojkat,3); getFiguraInfo(tr); kwadrat kw(tabKwadrat,4); getFiguraInfo(kw); } return 0; Przykładowy efekt działania programu: okrag Ilosc puntow: 2 Wspolrzedne: (1 , 0) (2 , 2) promien: 2.23607 pole: 15.7 obwod: 14.0425 _____________________ trojkat rownoboczny Ilosc puntow: 3 Wspolrzedne: (1 , 0) (5 , 0) (3 , 3.4641) dlugosc boku: 4 wysokosc: 3.4641 pole: 6.9282 obwod: 12 _____________________ kwadrat Ilosc puntow: 4 Wspolrzedne: (1 , 0) (5 , 0) (1 , 4) (5 , 4) dlugosc boku: 4 pole: 16 obwod: 16 _____________________