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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Paveld÷jimas <strong>ir</strong> polimorfizmas<br />

Šį skyrelį pask<strong>ir</strong>kime likusiems dviems (iš trijų) objektiškai orientuoto<br />

programavimo (OOP) banginiams: paveld÷jimui <strong>ir</strong> polimorfizmui, kurie visuomet<br />

eina drauge.<br />

P<strong>ir</strong>masis OOP banginis kurį mes jau mat÷me – inkapsuliacija. Kartais sakoma, kad<br />

inkapsuliacija, tai kai klas÷je kartu su duomenimis yra metodai, operuojantys tais<br />

duomenimis. Tačiau mes mąstykime, jog inkapsuliacija, tai klas÷s realizacijos<br />

detalių pasl÷pimas po gerai apgalvotu interfeisu. Išeities tekstuose inkapsuliacija<br />

pas<strong>ir</strong>eišk÷ dviem būdais:<br />

• Klas÷s interfeisas (aprašas) buvo iškeltas į atsk<strong>ir</strong>ą antraštinį h-failą, kurį gali<br />

matyti <strong>ir</strong> naudoti (įtraukti) kiti moduliai (cpp-failai). Tuo tarpu klas÷s realizacija<br />

(apibr÷žimas) nuosavame modulyje (cpp-faile) paprastai n÷ra matomas kitiems<br />

moduliams. Tokia inkapsuliacija yra atkeliavusi iš modulinio programavimo,<br />

kuris dera ne tik su OOP, bet <strong>ir</strong> su kitais programavimo stiliais (procedūriniu,<br />

struktūriniu <strong>ir</strong> t.t.).<br />

• Sk<strong>ir</strong>tingai nuo C/C++ struktūrų duomenų-laukų, kurie yra vieši (public), klas÷s<br />

duomenys-laukai dažniausiai būna pasl÷pti (private arba protected) nuo<br />

tiesioginio skaitymo <strong>ir</strong> keitimo. Jais manipuliuoja vieši (public) klas÷s metodai.<br />

Tai OOP inkapsuliacija.<br />

Paveld÷jimą <strong>ir</strong> polimorfizmą pailiustruosime toliau vystydami maisto prekių<br />

parduotuv÷s pavyzdį. Modeliuosime nedalomus <strong>ir</strong> sud÷tinius maisto produktus.<br />

Pavyzdžiui, laikysime, kad druska, miltai, sviestas, dešra <strong>ir</strong> pan. yra nedalomi maisto<br />

produktai (PrimitiveFood), o sumuštinis, pyragas <strong>ir</strong> t.t. - dalomi (CompositeFood).<br />

45

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

Saved successfully!

Ooh no, something went wrong!