Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Švarus interfeisas<br />
Neformalus apibr÷žimas: jei klas÷ neturi savo duomenų, turi tuščią v<strong>ir</strong>tualų<br />
destruktorių <strong>ir</strong> visi jos metodai yra vieši (public) <strong>ir</strong> švariai v<strong>ir</strong>tualūs, tai tokią klasę<br />
vadinsime švariu interfeisu.<br />
Švarus interfeisas - puiki priemon÷ labai aiškiai atsk<strong>ir</strong>ti sąvokas "interfeisas" <strong>ir</strong><br />
"realizacija". Jei klas÷ paveldi iš švaraus interfeiso <strong>ir</strong> realizuoja visus jo metodus, tai<br />
tokiu atveju dažnai sakoma, jog klas÷ "realizuoja interfeisą". Pavyzdžiui, aprašykime<br />
grafinę figūrą Shape, kurią nusako jos ka<strong>ir</strong>iojo v<strong>ir</strong>šutinio kampo koordinat÷s, bei<br />
plotis <strong>ir</strong> aukštis:<br />
// project: composite, shape.h<br />
class Shape<br />
{<br />
public:<br />
v<strong>ir</strong>tual ~Shape () {}<br />
v<strong>ir</strong>tual int getX () const = 0;<br />
v<strong>ir</strong>tual int getY () const = 0;<br />
v<strong>ir</strong>tual int getWidth () const = 0;<br />
v<strong>ir</strong>tual int getHeight () const = 0;<br />
v<strong>ir</strong>tual void setLocation (int x, int y) = 0;<br />
v<strong>ir</strong>tual void paint (QPainter* p) = 0;<br />
};<br />
Klas÷ Shape - švarus interfeisas. Klas÷je Shape nesaugome duomenų apie<br />
koordinates ekrane, nes paveld÷jusios klas÷s naudoja sk<strong>ir</strong>tingas strategijas. Pvz.<br />
stačiakampis saugo koordinates išreikštiniu būdu, o apskritimas skaičiuoja pagal<br />
savo centrą.<br />
Shape<br />
getX()<br />
getY()<br />
getWidth()<br />
getHeight()<br />
setLocation()<br />
paint()<br />
Rectangle<br />
x :int<br />
y :int<br />
width :int<br />
height :int<br />
C<strong>ir</strong>cle<br />
cx :int<br />
cy :int<br />
radius :int<br />
Composite<br />
addShape()<br />
98