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

Podobne dokumenty