Laboratorium 8, 05.12.2012 Należy utworzyć klasy, których obiekty
Transkrypt
Laboratorium 8, 05.12.2012 Należy utworzyć klasy, których obiekty
Laboratorium 8, 05.12.2012 Należy utworzyć klasy, których obiekty będą reprezentować różne rodzaje punktów. Klasy powinny dziedziczyć ze wspólnej klasy bazowej – punkt. Obiekty klasy punkt reprezentują punkt w przestrzeni jednowymiarowej, pola klasy: (string) nazwa, współrzędna (double) x. Klasa dziedzicząca z klasy punkt: - klasa punkt2d, której obiekty reprezentują punkt w przestrzeni 2D – dodatkowe pole klasy: współrzędna (double) y Następnie klasy dziedziczące z klasy punkt2D: - klasa punkt3d, której obiekty reprezentują punkt w przestrzeni 3D – dodatkowe pole klasy: współrzędna (double) z - klasa piksel, której obiekty reprezentują piksel, czyli punkt 2D posiadający dodatkowo kolor – dodatkowe pole klasy: (string) kolor Klasy powinny zawierać konstruktory oraz odpowiednie metody get. Metoda getName(), zwraca nazwę punktu (takie samo działanie dla wszystkich klas). Metoda getPunktType(), zwraca typ punkty, dla każdej metoda ma zwrócić inny typ punktu: klasa punkt - “punkt 1D”, klasa punkt2d - “punkt 2D”, klasa punkt3d - “punkt 3D”, klasa piksel “piksel” Metoda getPunktDim(), zwraca wymiar punktu (int) Metoda getPunktInfo(), wypisuje pozostałe informacje o punkcie, czyli współrzędne a w przypadku klasy piksel jeszcze kolor. Aby możliwe było poprawne działanie funkcji viewPunktInfo(punkt &p), podanej poniżej, odpowiednie funkcje w klasie punkt powinny być wirtualne. Zagwarantuje to, że w przypadku operowania referencją do klasy podstawowej punt, która tak naprawdę odnosi się do obiektu klasy pochodnej, zostanie wywołana właściwa funkcja klasy składowej referencji odnoszącej się do odpowiedniego obiektu. Plik main.cpp : #include "punkt.h" using namespace std; void viewPunktInfo(punkt &p){ cout << "_______________" << endl; cout << "Nazwa punktu: " << p.getName() << endl; cout << "Typ punktu: " << p.getPunktType() << endl; cout << "Wymiar punktu: " << p.getPunktDim() << endl; cout << "A teraz więcej informacji o punkcie: " << endl; p.getPunktInfo(); } int main() { // Tworzymy cztery rodzaje punktow punkt p1("punkt1",9); punkt2d p2("punkt2",2,3); punkt3d p3("punkt3",3.3,6.6,9.9); piksel p4("punkt4",1.1,2.2,"czerwony"); // i wyswietlamy informacje o nich viewPunktInfo(p1); viewPunktInfo(p2); viewPunktInfo(p3); viewPunktInfo(p4); } return 0; Przykładowy efekt działania programu: _______________ Nazwa punktu: punkt1 Typ punktu: punkt 1D Wymiar punktu: 1 A teraz więcej informacji o punkcie: Wspolrzedna x: 9 _______________ Nazwa punktu: punkt2 Typ punktu: punkt 2D Wymiar punktu: 2 A teraz więcej informacji o punkcie: Wspolrzedne: (2,3) _______________ Nazwa punktu: punkt3 Typ punktu: punkt 3D Wymiar punktu: 3 A teraz więcej informacji o punkcie: Wspolrzedne: (3.3,6.6,9.9) _______________ Nazwa punktu: punkt4 Typ punktu: piksel Wymiar punktu: 2 A teraz więcej informacji o punkcie: Wspolrzedne: (1.1,2.2) Kolor: czerwony