Mantojums pret konteineru
Mantojums un konteiners ir divi svarīgi jēdzieni, kas atrodami OOP (Objektorientētas programmēšanas piemērs: C++). Vienkārši izsakoties, gan konteiners, gan mantojums nodarbojas ar papildu rekvizītu vai uzvedības nodrošināšanu klasei. Mantojums ir klases spēja mantot īpašības un uzvedību no vecākklases, to paplašinot. No otras puses, konteiners ir klases spēja saturēt dažādu klašu objektus kā dalībnieku datus.
Kas ir mantošana?
Kā minēts iepriekš, mantošana ir klases iespēja mantot īpašības un uzvedību no vecākklases, to paplašinot. Mantojums būtībā nodrošina koda atkārtotu izmantošanu, ļaujot paplašināt esošās klases īpašības un uzvedību ar jaunu definētu klasi. Ja klase A paplašina B, tad klasi B sauc par vecākklasi (vai superklasi), bet klasi A sauc par atvasināto klasi (vai atvasinātu klasi/apakšklasi). Šajā piemērā A klase pārmantos visus publiskos un aizsargātos superklases (B) atribūtus un metodes. Apakšklase var pēc izvēles ignorēt (nodrošināt jaunu vai paplašinātu funkcionalitāti metodēm) uzvedību, kas mantota no vecākklases. Mantojums apzīmē “ir-a” attiecību OOP. Tas būtībā nozīmē, ka A ir arī B. Citiem vārdiem sakot, B var būt klase ar vispārīgu noteiktas reālās pasaules entītijas aprakstu, bet A norāda noteiktu specializāciju. Reālās pasaules programmēšanas problēmā Personu klasi var paplašināt, lai izveidotu darbinieku klasi. To sauc par specializāciju. Bet jūs varat arī vispirms izveidot klasi Darbinieks un pēc tam vispārināt to arī Personas klasē (t.i.e. vispārinājums). Šajā piemērā Darbiniekam būs visas Personas īpašības un uzvedība (t.i., Darbinieks arī ir Persona), un tas var ietvert arī dažas papildu funkcijas (tātad, Persona nav darbinieks).
Kas ir konteiners?
Konteiners ir klases spēja kā dalībnieku datus saturēt dažādu klašu objektus. Piemēram, A klases loceklis var ietvert B klases objektu. Šeit visas B definētās publiskās metodes (vai funkcijas) var izpildīt A klasē. A klase kļūst par konteineru, savukārt B klase kļūst par ietverto klasi. Konteiners tiek saukts arī par sastāvu. Šajā piemērā var teikt, ka A klasi veido B klase. OOP konteiners apzīmē attiecību “has-a”. Ir svarīgi atzīmēt, ka, lai gan konteineram ir piekļuve visu ietvertās klases publisko metožu izpildei, tas nevar mainīt vai nodrošināt papildu funkcionalitāti. Runājot par reālās pasaules programmēšanas problēmu, klases TextBox objekts var būt ietverts klasē Form, un tādējādi var teikt, ka veidlapā ir tekstlodziņš (vai alternatīvi, forma sastāv no TextBox).
Atšķirība starp mantošanu un konteineru
Lai gan mantošana un konteiners ir divi OOP jēdzieni, tie ir diezgan atšķirīgi ar to, ko tie ļauj programmētājam sasniegt. Mantojums ir klases iespēja mantot īpašības un uzvedību no vecākklases, to paplašinot, savukārt konteiners ir klases spēja saturēt dažādu klašu objektus kā dalībnieku datus. Ja klase tiek paplašināta, tā pārmanto visas publiskās un aizsargātās īpašības/uzvedību, un šīs darbības var ignorēt apakšklasē. Bet, ja klase ir ietverta citā, konteiners nesaņem iespēju mainīt vai pievienot ietvertā uzvedību. Mantojums apzīmē “ir-a” attiecību OOP, savukārt konteiners apzīmē “ir-a” attiecību.