klasy abstrakcyjne 2






Programowanie obiektowe




Idea klasy abstrakcyjnej





Klasą abstrakcyjną nazywamy klasę,
w której (świadomie) nie zrealizowano przynajmniej jednej funkcji.


class Figure{
protected:
double xcoor,ycoor,size;
public:
void virtual show() = 0;
void virtual hide() = 0;
void move(double xmov, double ymov, int steps, int delay);
};


By kompilator się nie pogubił, mówimy mu wyraźnie, że świadomie nie będziemy realizować
funkcji pisząc obok jej deklaracji "=0". O takiej funkcji mówimy, że jest
czysto wirtualna.

Dlaczego pasuje tu nazwa klasa abstrakcyjna? Bo nie wchodzimy w szczegóły
jak figurę "pokazać" (show)
i jak ją "schować" (hide) - to zależy od konkretnej figury i to zrobimy
dopiero w stosownych klasach pochodnych.

Natomiast wiedząc jak figurę pokazać i schować, wiemy jak animować jej przesunięcie
(move).

W tym celu wystarczy stosowną ilość razy figurę schować, trochę zmienić
jej współrzędne i wyświetlić w nowym miejscu:


void Figure::move(double xmov, double ymov, int steps, int delay){
double dx=xmov/steps, dy=ymov/steps;
for(int i=0;i<steps;i++){
hide();
xcoor+=dx; ycoor+=dy;
show();
for(int j=0;j<delay;j++); // opóźnienie, aby oko zdążyło coś zobaczyć
}
}






(9) (c) Marian Mrozek, Kraków - Nowy Sącz, 1997-2001





Wyszukiwarka

Podobne podstrony:
klasy abstrakcyjne 4
klasy abstrakcyjne 5
07 Java klasy abstrakcyjne, interfejsy, polimorfizm 0
klasy abstrakcyjne 1
klasy abstrakcyjne 0
klasy abstrakcyjne 3
klasy abstrakcyjne 6
Drewno klasy drewna
Test ortograficzny dla klasy 3
karta pracy klasy trzeciej nr14 marzec
Program nauczania klasy 4 6 SP (DKW 4014 59?)
karta pracy klasy trzeciej nr20 czerwiec
JP SS 6 Klasy i obiekty
AbstractElementVisitor6
ROZDZIAŁ XII Wyrównanie sieci II klasy
AbstractSpinnerModel
Niedobór ekspresji antygenów MHC klasy II D 84 8

więcej podobnych podstron