Txoj kev sib tw vs kev sib sau
Txoj Cai thiab Kev Sau Npe yog ob lub ntsiab lus tseem ceeb pom hauv OOP (Object Oriented Programming). Hauv cov ntsiab lus yooj yim, ob qho tib si Composition thiab Inheritance cuam tshuam nrog kev muab cov khoom ntxiv lossis kev coj cwj pwm rau hauv chav kawm. Inheritance yog lub peev xwm rau cov chav kawm kom tau txais txiaj ntsig thiab coj tus cwj pwm los ntawm cov niam txiv hauv chav kawm los ntawm kev txuas ntxiv mus. Ntawm qhov tod tes, Composition yog lub peev xwm ntawm chav kawm kom muaj cov khoom sib txawv ntawm cov chav kawm raws li cov tswv cuab cov ntaub ntawv.
Dab tsi yog Txoj Cai?
Raws li tau hais los saum toj no, Txoj Cai Lij Choj yog lub peev xwm rau chav kawm kom tau txais txiaj ntsig thiab coj tus cwj pwm los ntawm niam txiv chav kawm los ntawm kev txuas ntxiv mus. Inheritance tseem ceeb muab cov cai rov siv dua los ntawm kev tso cai txuas ntxiv cov khoom thiab tus cwj pwm ntawm cov chav kawm uas twb muaj lawm los ntawm chav kawm tshiab. Yog chav kawm A txuas B, ces chav B yog hu ua niam txiv chav kawm (los yog chav kawm super) thiab chav A yog hu ua tus me nyuam chav kawm (los yog derived class/sub class). Hauv qhov piv txwv no, chav kawm A yuav tau txais tag nrho cov pej xeem thiab kev tiv thaiv cov yam ntxwv thiab cov txheej txheem ntawm chav kawm super (B). Cov subclass muaj peev xwm xaiv tau override (muab tshiab lossis txuas ntxiv ua haujlwm rau cov txheej txheem) tus cwj pwm tau txais los ntawm niam txiv chav kawm.
Txoj kev cuab tam sawv cev rau "yog-ib" kev sib raug zoo hauv OOP. Qhov no tseem ceeb txhais tau hais tias A kuj yog B. Hauv lwm lo lus, B tuaj yeem yog chav kawm nrog cov lus piav qhia dav dav ntawm lub ntiaj teb tiag tiag tab sis A qhia txog qee qhov tshwj xeeb. Hauv qhov teeb meem tiag tiag hauv ntiaj teb, cov neeg ua haujlwm yuav raug txuas ntxiv los tsim cov chav ua haujlwm. Qhov no hu ua specialization. Tab sis koj tuaj yeem ua ntej tsim cov neeg ua haujlwm hauv chav kawm thiab tom qab ntawd nthuav dav nws mus rau Ib Tug Neeg Chav Kawm thiab (i.e. generalization). Hauv qhov piv txwv no, Tus Neeg Ua Haujlwm yuav muaj tag nrho cov khoom thiab tus cwj pwm ntawm Tus Neeg (piv txwv li Cov Neeg Ua Haujlwm kuj yog Tus Neeg) thiab yuav muaj qee qhov kev ua haujlwm ntxiv (yog li, Tus Neeg tsis yog Tus Neeg Ua Haujlwm) ib yam nkaus.
Kev sib sau yog dab tsi?
Composition yog lub peev xwm ntawm chav kawm kom muaj cov khoom ntawm cov chav sib txawv raws li cov tswv cuab cov ntaub ntawv. Piv txwv li, chav kawm A tuaj yeem muaj qhov khoom ntawm chav kawm B ua tus tswv cuab. Ntawm no, txhua txoj hauv kev pej xeem (lossis kev ua haujlwm) uas tau teev tseg hauv B tuaj yeem ua tiav hauv chav kawm A. Chav A yuav dhau los ua lub thawv, thaum chav kawm B dhau los ua chav kawm. Kev sib xyaw kuj tseem hu ua Containership. Hauv qhov piv txwv no, nws tuaj yeem hais tau tias chav kawm A yog suav nrog chav B. Hauv OOP, Cov Txheej Txheem sawv cev rau "muaj-a" kev sib raug zoo. Nws yog ib qho tseem ceeb uas yuav tsum nco ntsoov tias, txawm tias lub thawv ntim tau nkag mus rau kev ua tiav txhua txoj hauv kev pej xeem ntawm cov chav kawm, nws tsis tuaj yeem hloov lossis muab kev ua haujlwm ntxiv. Thaum nws los txog rau lub ntiaj teb tiag tiag programming teeb meem, ib yam khoom ntawm chav kawm TextBox tej zaum yuav muaj nyob rau hauv chav kawm ntawv daim ntawv, thiab yog li hais tias ib daim ntawv muaj ib tug TextBox (los yog lwm yam, ib daim ntawv yog tsim los ntawm ib tug TextBox).
Dab tsi yog qhov sib txawv ntawm Kev Tsim Kho thiab Kev Tsim Nyog?
Txawm hais tias Inheritance thiab Composition yog ob lub ntsiab lus OOP, lawv txawv heev ntawm qhov lawv tso cai rau tus programmer ua tiav. Inheritance yog lub peev xwm rau cov chav kawm kom tau txais cov khoom thiab kev coj tus cwj pwm los ntawm cov niam txiv hauv chav kawm los ntawm kev nthuav tawm, thaum Composition yog lub peev xwm ntawm chav kawm kom muaj cov khoom sib txawv ntawm cov chav kawm raws li cov tswv cuab cov ntaub ntawv. Yog tias ib chav kawm txuas ntxiv, nws tau txais tag nrho cov pej xeem thiab kev tiv thaiv cov khoom / tus cwj pwm thiab cov cwj pwm no yuav raug hla dhau los ntawm subclass. Tab sis yog tias ib chav kawm muaj nyob rau hauv lwm qhov, lub thawv tsis tau txais lub peev xwm hloov lossis ntxiv tus cwj pwm rau cov ntim. Cov cuab yeej cuab tam sawv cev rau "yog-ib" kev sib raug zoo hauv OOP, thaum Kev Sau Npe sawv cev rau "muaj-a" kev sib raug zoo.