Dallimi midis trashëgimisë dhe kontejnerit

Dallimi midis trashëgimisë dhe kontejnerit
Dallimi midis trashëgimisë dhe kontejnerit

Video: Dallimi midis trashëgimisë dhe kontejnerit

Video: Dallimi midis trashëgimisë dhe kontejnerit
Video: Очень легкая модель попкорна Детский кардиган / Вязаный крючком кардиган для девочки / 1 год 2024, Dhjetor
Anonim

Trashëgimi vs Containership

Trashëgimia dhe Mbajtja janë dy koncepte të rëndësishme që gjenden në OOP (Shembull i Programimit të Orientuar në Objekt: C++). Me fjalë të thjeshta, si Containership ashtu edhe Trashëgimia merren me ofrimin e vetive ose sjelljeve shtesë për një klasë. Trashëgimia është aftësia e një klase për të trashëguar vetitë dhe sjelljen nga një klasë mëmë duke e zgjeruar atë. Nga ana tjetër, Containership është aftësia e një klase për të përmbajtur objekte të klasave të ndryshme si të dhëna anëtarësh.

Çfarë është trashëgimia?

Siç u përmend më lart, trashëgimia është aftësia që një klasë të trashëgojë vetitë dhe sjelljen nga një klasë prind duke e zgjeruar atë. Trashëgimia në thelb siguron ripërdorimin e kodit duke lejuar zgjerimin e vetive dhe sjelljes së një klase ekzistuese nga një klasë e sapopërcaktuar. Nëse klasa A shtrihet B, atëherë klasa B quhet klasa prind (ose super klasa) dhe klasa A quhet klasa fëmijë (ose klasa/nënklasa e prejardhur). Në këtë skenar shembull, klasa A do të trashëgojë të gjitha atributet dhe metodat publike dhe të mbrojtura të super klasës (B). Nënklasa mund të anashkalojë opsionalisht (të ofrojë funksione të reja ose të zgjeruara për metodat) sjelljen e trashëguar nga klasa mëmë. Trashëgimia përfaqëson një marrëdhënie "është-a" në OOP. Kjo në thelb do të thotë se A është gjithashtu një B. Me fjalë të tjera, B mund të jetë klasa me një përshkrim të përgjithshëm të një entiteti të caktuar të botës reale, por A specifikon një specializim të caktuar. Në një problem programimi të botës reale, klasa Person mund të zgjerohet për të krijuar klasën Punonjës. Ky quhet specializim. Por ju gjithashtu mund të krijoni fillimisht klasën Punonjës dhe më pas ta përgjithësoni atë edhe në një klasë Person (d.m.th.e. përgjithësim). Në këtë shembull, Punonjësi do të ketë të gjitha vetitë dhe sjelljen e Personit (d.m.th. Punonjësi është gjithashtu një person) dhe mund të përmbajë edhe disa funksione shtesë (pra, Personi nuk është punonjës) gjithashtu.

Çfarë është Containership?

Containership është aftësia e një klase për të përmbajtur objekte të klasave të ndryshme si të dhëna anëtarësh. Për shembull, klasa A mund të përmbajë një objekt të klasës B si anëtar. Këtu, të gjitha metodat (ose funksionet) publike të përcaktuara në B mund të ekzekutohen brenda klasës A. Klasa A bëhet kontejner, ndërsa klasa B bëhet klasa e përmbajtur. Kontejnerët referohen gjithashtu si Përbërja. Në këtë shembull, mund të thuhet se klasa A është e përbërë nga klasa B. Në OOP, Containership përfaqëson një marrëdhënie "ka-a". Është e rëndësishme të theksohet se, edhe pse kontejneri ka akses për të ekzekutuar të gjitha metodat publike të klasës së përmbajtur, ai nuk është në gjendje të ndryshojë ose të sigurojë funksionalitet shtesë. Kur bëhet fjalë për një problem programimi të botës reale, një objekt i klasës TextBox mund të përmbahet në klasën Form, dhe kështu mund të thuhet se një Form përmban një TextBox (ose ndryshe, një Form përbëhet nga një TextBox).

Dallimi midis trashëgimisë dhe kontejnerit

Edhe pse Trashëgimia dhe Kontejnerimi janë dy koncepte OOP, ato janë mjaft të ndryshme në atë që lejojnë programuesin të arrijë. Trashëgimia është aftësia e një klase për të trashëguar vetitë dhe sjelljen nga një klasë mëmë duke e zgjeruar atë, ndërsa Containership është aftësia e një klase për të përmbajtur objekte të klasave të ndryshme si të dhëna anëtare. Nëse një klasë zgjerohet, ajo trashëgon të gjitha vetitë/sjelljet publike dhe të mbrojtura dhe ato sjellje mund të anashkalohen nga nënklasa. Por nëse një klasë përmbahet në një tjetër, kontejneri nuk merr aftësinë për të ndryshuar ose shtuar sjellje në përmbajtjen. Trashëgimia përfaqëson një marrëdhënie "është-a" në OOP, ndërsa Containership përfaqëson një marrëdhënie "ka-a".

Recommended: