Atšķirība starp kompozīciju un mantojumu

Plānojot, atkārtoti lietojams kods ir esošās programmatūras izmantošana jaunas programmatūras izveidošanai, izmantojot atkārtotas izmantojamības principus. Kodu atkārtota izmantojamība tiek uzskatīta par būtisku produktivitāti informācijas tehnoloģiju ietilpīgos uzņēmumos. To veicina objektorientētās sistēmās, nodibinot attiecības starp klasēm. Objektorientētā programmēšanā ir divas galvenās iespējas, kā noteikt šīs attiecības - mantojums un kompozīcija. Mantojuma ieviešana ir viens veids, kā saistīt klases, bet OOP nodrošina jauna veida attiecības starp klasēm, ko sauc par kompozīciju. Izveidojot saikni starp jaunām un esošām klasēm, jauna klase var mantot vai iegult kodu no vienas vai vairākām esošām klasēm.

OOP mantojums ir metodika, ar kuras palīdzību objekts iegūst viena vai vairāku citu objektu īpašības. Tas ir viens no visspēcīgākajiem rīkiem koda atkārtotas izmantojamības ieviešanā OOP. Izmantojot mantojumu, jaunu klasi var izveidot, nodibinot vecāku un bērnu attiecības ar esošajām klasēm. Objekta sastāvs ir alternatīva klases mantojumam. Objekta izmantošana citā objektā ir pazīstama kā kompozīcija. Daudzos gadījumos jūs vēlētos izmantot objektu kā lauku citas klases ietvaros, jo ir viegli izveidot sarežģītas klases, izmantojot komponentus, izmantojot iepriekš uzrakstītas, labi izstrādātas klases. To sauc par kompozīciju. Gan mantojums, gan sastāvs daudzos gadījumos nodrošina līdzvērtīgu funkcionalitāti, objekta kompozīcija ir labāks atkārtotas izmantošanas modelis nekā klases mantojums. Šajā rakstā ir salīdzinātas abas pieejas.

Kas ir mantojums?

Mantojums ir viens no visspēcīgākajiem rīkiem koda atkārtotas izmantojamības ieviešanā uz objektu orientētā programmēšanā. Tas attiecas uz funkcionalitāti, ar kuru viens objekts iegūst viena vai vairāku citu objektu īpašības. Mantojums C ++ nozīmē, ka varat izveidot klases, kuru atribūtus iegūst no esošajām klasēm. Tas nozīmē, ka jūs specializējat klasi, lai izveidotu klases attiecības, kas rada spēcīgu saikni starp bāzes un atvasinātajām klasēm. Mantojuma ieviešana veicina koda atkārtotu izmantošanu, jo no esošajām klasēm tiek izveidotas jaunas klases. Klases mantojums arī atvieglo atkārtotas izmantošanas modifikāciju. Bet klases mantojumam ir arī dažas negatīvās puses. Pirmkārt, tā kā mantojums ir noteikts sastādīšanas laikā, izpildes laikā nevar mainīt no vecāku klasēm mantotās ieviešanas..

Kas ir sastāvs?

OOP nodrošina vēl vienu sakarību starp klasēm, ko sauc par kompozīciju, kas tiek dēvēta arī par saistību. Ja viena objekta īpašībām jābūt daļai no cita objekta, attiecībām ir nepieciešama kompozīcija. Lai izveidotu klasi no esošajām klasēm, katras klases objekts jādeklarē kā jaunās klases dalībnieks. Vienkāršiem vārdiem sakot, objekta izmantošanu citā objektā sauc par kompozīciju. Daudzas reizes jūs varētu vēlēties izmantot objektu kā lauku citā klasē. Kompozīcijā jūs izmantojat objektu klases iekšienē. Atšķirībā no klases mantojuma, objekta sastāvs tiek definēts dinamiski izpildes laikā, objektiem iegūstot atsauces uz citiem objektiem. Turklāt kompozīcija nodrošina labāku objekta izmantošanas veidu, neapdraudot objekta iekšējās detaļas, tas ir, ja kompozīcija ir noderīga.

Atšķirība starp kompozīciju un mantojumu

Pieeja

Lai gan gan mantojums, gan sastāvs veicina koda atkārtotu izmantojamību objektorientētā sistēmā, nodibinot attiecības starp klasēm, un tie daudzējādā ziņā nodrošina līdzvērtīgu funkcionalitāti, viņi izmanto dažādas pieejas. Izmantojot mantojumu, jūs varat izveidot klases, no kurām iegūst atribūtus no esošajām klasēm, tāpēc, mantojot, lai izveidotu klasi, jūs varat paplašināt esošo klasi. Tieši pretēji, objekta izmantošana citā objektā ir pazīstama kā kompozīcija. Objekta sastāvs ir alternatīva klases mantojumam. Ja viena objekta īpašībām jābūt daļai no cita objekta, attiecībām ir nepieciešama kompozīcija.

Attiecības

Mantojuma gadījumā jūs specializējat klasi, lai izveidotu “ir-ir” attiecības starp klasēm, kas rada spēcīgu saikni starp bāzes un atvasinātajām klasēm. Tas ļauj veidot klašu hierarhiju, un hierarhija sākas ar visparastāko klasi un pāriet uz specifiskākām klasēm. Īstenojot mantojumu, vienas klases biedru funkcijas kļūst par citas klases īpašībām, tieši tās kodējot klasē. Kompozīcijā jūs izmantojat objektu klases iekšienē, un visi objekta pieprasījumi tiek pārsūtīti objektam. Iekšējās detaļas kompozīcijā nav pakļautas viena otrai, tāpēc tās ir “ir-ir” attiecības.

Īstenošana

Klases mantojums tiek noteikts kompilēšanas laikā, tāpēc izpildes laikā nevar mainīt no vecāku klasēm mantotās ieviešanas. Tā kā mantojums pakļauj apakšklasei sīkāku informāciju par tās vecāku īstenošanu, tā bieži pārtrauc iekapsulēšanu. Jebkuras izmaiņas vecāku klasē atspoguļos apakšklasē, kas var radīt problēmas, mēģinot atkārtoti izmantot apakšklasi. Objektu sastāvs, gluži pretēji, tiek dinamiski definēts izpildes laikā, objektiem iegūstot atsauces uz citiem objektiem. Un tā kā objektiem var piekļūt tikai caur to saskarnēm, tas neizjauks iekapsulēšanu. Ikvienu objektu izpildes laikā var aizstāt ar citu objektu, ja vien tam ir tāds pats tips.

Sastāvs pret mantojumu: salīdzināšanas tabula

Sastāva kopsavilkums pret mantojumu

Daudzos gadījumos jūs vēlētos izmantot objektu kā lauku citas klases ietvaros, jo sarežģītas klases ir vieglāk izveidot, izmantojot iepriekš uzrakstītas, labi izstrādātas klases. Šeit jūs izmantojat kompozīciju. Mantojums nodrošina veidu, kā atkārtoti izmantot kodu, paplašinot klasi ar minimālu piepūli, tāpēc mantojums ir vērtīgs līdzeklis attiecību nodibināšanai starp klasēm. Parasti ir vēlams izmantot kompozīciju, jo tā ir veids, kā izmantot objektu, neapdraudot objekta iekšējās detaļas, kurās kompozīcija ir noderīga. Mantojums nerodas bez problēmām, bet tāpat kā mantojums, objekta kompozīcija rada līdzīgas bažas par izpildi attiecībā uz objekta izveidi un iznīcināšanu.