Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
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