Dallimi midis trashëgimisë dhe përbërjes

Dallimi midis trashëgimisë dhe përbërjes
Dallimi midis trashëgimisë dhe përbërjes

Video: Dallimi midis trashëgimisë dhe përbërjes

Video: Dallimi midis trashëgimisë dhe përbërjes
Video: Mjeshtri i Polifonisë që largon xhindet dhe magjitë | Real People 2024, Nëntor
Anonim

Trashëgimia vs Përbërja

Trashëgimia dhe Përbërja janë dy koncepte të rëndësishme që gjenden në OOP (Programimi i Orientuar në Objekt). Me fjalë të thjeshta, si Përbërja ashtu edhe Trashëgimia kanë të bëjnë me sigurimin 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, Përbërja ë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ë Përbërja?

Përbërja ë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. Përbërja referohet gjithashtu si Containership. Në këtë shembull, mund të thuhet se klasa A është e përbërë nga klasa B. Në OOP, Përbërja 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).

Cili është ndryshimi midis trashëgimisë dhe përbërjes?

Megjithëse Trashëgimia dhe Përbërja janë dy koncepte OOP, ato janë mjaft të ndryshme në atë që i lejojnë programuesit 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 Composition ë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 Përbërja përfaqëson një marrëdhënie "ka-a".

Recommended: