31.12.2014 Views

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!