Diferența dintre moștenire și compoziție

Diferența dintre moștenire și compoziție
Diferența dintre moștenire și compoziție

Video: Diferența dintre moștenire și compoziție

Video: Diferența dintre moștenire și compoziție
Video: Autorizatia de CONSTRUIRE - Cum se obtine 2024, Noiembrie
Anonim

Moștenire vs. compoziție

Moștenirea și Compoziția sunt două concepte importante găsite în OOP (Programare Orientată pe Obiect). În termeni simpli, atât Compoziția, cât și Moștenirea se ocupă de furnizarea de proprietăți sau comportament suplimentare unei clase. Moștenirea este capacitatea unei clase de a moșteni proprietăți și comportament de la o clasă părinte prin extinderea acesteia. Pe de altă parte, Compoziția este capacitatea unei clase de a conține obiecte din clase diferite ca date despre membri.

Ce este moștenirea?

După cum sa menționat mai sus, Moștenirea este capacitatea unei clase de a moșteni proprietăți și comportament de la o clasă părinte prin extinderea acesteia. Moștenirea oferă în esență reutilizarea codului, permițând extinderea proprietăților și comportamentului unei clase existente de către o clasă nou definită. Dacă clasa A se extinde pe B, atunci clasa B se numește clasa părinte (sau super-clasa) și clasa A se numește clasa copil (sau clasa/subclasa derivată). În acest exemplu de scenariu, clasa A va moșteni toate atributele și metodele publice și protejate ale superclasei (B). Subclasa poate suprascrie opțional (oferă funcționalitate nouă sau extinsă metodelor) comportamentul moștenit de la clasa părinte.

Moștenirea reprezintă o relație „este-a” în POO. Acest lucru înseamnă în esență că A este și un B. Cu alte cuvinte, B poate fi clasa cu o descriere generală a unei anumite entități din lumea reală, dar A specifică o anumită specializare. Într-o problemă de programare din lumea reală, clasa Persoană ar putea fi extinsă pentru a crea clasa Angajat. Aceasta se numește specializare. Dar ați putea crea mai întâi clasa Angajat și apoi să o generalizați și la o clasă Persoană (de ex.e. generalizare). În acest exemplu, Angajatul va avea toate proprietățile și comportamentul Persoanei (adică, Angajatul este, de asemenea, o Persoană) și poate conține și unele funcționalități suplimentare (deci, Persoana nu este un Angajat).

Ce este compoziția?

Compoziția este capacitatea unei clase de a conține obiecte din clase diferite ca date de membru. De exemplu, clasa A ar putea conține un obiect din clasa B ca membru. Aici, toate metodele (sau funcțiile) publice definite în B pot fi executate în cadrul clasei A. Clasa A devine container, în timp ce clasa B devine clasa conținută. Compoziția este denumită și Containership. În acest exemplu, se poate spune că clasa A este compusă din clasa B. În POO, Compoziția reprezintă o relație „are-a”. Este important de menționat că, deși containerul are acces pentru a executa toate metodele publice ale clasei conținute, nu este capabil să modifice sau să ofere funcționalități suplimentare. Când vine vorba de o problemă de programare în lumea reală, un obiect din clasa TextBox poate fi conținut în clasa Form și astfel se poate spune că un Formular conține un TextBox (sau alternativ, un Form este compus dintr-un TextBox).

Care este diferența dintre moștenire și compunere?

Deși Moștenirea și Compoziția sunt două concepte POO, ele sunt destul de diferite în ceea ce permit programatorului să realizeze. Moștenirea este capacitatea unei clase de a moșteni proprietăți și comportament de la o clasă părinte prin extinderea acesteia, în timp ce Compoziția este capacitatea unei clase de a conține obiecte din clase diferite ca date membre. Dacă o clasă este extinsă, moștenește toate proprietățile/comportamentul public și protejat și acele comportamente pot fi suprascrise de subclasă. Dar dacă o clasă este conținută într-o altă clasă, containerul nu are capacitatea de a modifica sau de a adăuga comportament la conținut. Moștenirea reprezintă o relație „este-a” în POO, în timp ce Compoziția reprezintă o relație „are-a”.

Recomandat: