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.

tekstinę eilutę. Laikome, jog pastaroji gali būti apskaičiuojama iš kitų objekto laukų,<br />

tik jos skaičiavimas labai ilgai užtrunka. Tod÷l mes saugome požymį cacheValid,<br />

kuris parodo, ar nuo paskutinio eilut÷s skaičiavimo pasikeit÷ objekto laukai, ar ne.<br />

Jei laukai pasikeit÷, tai esame priversti iš naujo suskaičiuoti cacheString pagal naujas<br />

laukų reikšmes. Pati cacheString nelaikome objekto būsena, nes yra apskaičiuojama<br />

iš kitų objekto laukų:<br />

class Date<br />

{<br />

private:<br />

mutable bool cacheValid;<br />

mutable string cacheString;<br />

void computeCacheString() const;<br />

...<br />

public:<br />

...<br />

string getString() const;<br />

};<br />

string Date::getString() const<br />

{<br />

if (!cacheValid)<br />

{<br />

computeCacheString();<br />

cacheValid = true;<br />

}<br />

return cacheString;<br />

}<br />

82

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

Saved successfully!

Ooh no, something went wrong!