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 4klasy abstrakcyjne 507 Java klasy abstrakcyjne, interfejsy, polimorfizm 0klasy abstrakcyjne 1klasy abstrakcyjne 0klasy abstrakcyjne 3klasy abstrakcyjne 6Drewno klasy drewnaTest ortograficzny dla klasy 3karta pracy klasy trzeciej nr14 marzecProgram nauczania klasy 4 6 SP (DKW 4014 59?)karta pracy klasy trzeciej nr20 czerwiecJP SS 6 Klasy i obiektyAbstractElementVisitor6ROZDZIAŁ XII Wyrównanie sieci II klasyAbstractSpinnerModelNiedobór ekspresji antygenów MHC klasy II D 84 8więcej podobnych podstron