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

Anonim

Moștenirea vs. compoziția , moștenirea și compoziția sunt două concepte importante găsite în OOP (Object Oriented Programming). În termeni simpli, atât compoziția, cât și moștenirea se referă la furnizarea de proprietăți sau comportamente suplimentare unei clase. Moștenirea este capacitatea unei clase de a moșteni proprietățile și comportamentul 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 diferite clase ca date membre.

Ce este moștenirea?

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

Moștenirea reprezintă o relație "este-a" în PLO. Acest lucru înseamnă, în esență, că A este de asemenea 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 a lumii reale, clasa Persoană ar putea fi extinsă pentru a crea clasa Angajat. Aceasta se numește specializare. Dar, de asemenea, ați putea să creați mai întâi clasa Angajat și apoi să o generalizați și unei clase Persoană (de exemplu, generalizare). În acest exemplu, Angajatul va avea toate proprietățile și comportamentul Persoanei (de exemplu, angajatul este și o persoană) și poate conține unele funcționalități suplimentare (deci, Persoana nu este un angajat).

Care este compoziția?

Compoziția este capacitatea unei clase de a conține obiecte din diferite clase ca date membre. De exemplu, clasa A ar putea conține un obiect de clasă B ca membru. Aici, toate metodele publice (sau funcțiile) definite în B pot fi executate în clasa A. Clasa A devine container, în timp ce clasa B devine clasa limitată. Compoziția este denumită și Containership. În acest exemplu, se poate spune că clasa A este compusă din clasa B. În OOP, compoziția reprezintă o relație "has-a". Este important să rețineți că, deși containerul are acces la executarea tuturor metodelor publice din clasa conținută, acesta nu este capabil să modifice sau să furnizeze funcționalități suplimentare. Când vine vorba de o problemă de programare în lumea reală, un obiect de clasă TextBox poate fi conținut în clasa Formă, și astfel se poate spune că o Formă conține un TextBox (sau alternativ, un Formular este compus dintr-un TextBox).

Care este diferența dintre moștenire și compoziție?

Deși moștenirea și compoziția sunt două concepte OOP, ele sunt destul de diferite în ceea ce permite programatorului să realizeze. Moștenirea este capacitatea unei clase de a moșteni proprietățile și comportamentul de la o clasă părinte prin extinderea acesteia, în timp ce Compoziția este capacitatea unei clase de a conține obiecte din diferite clase ca date membre. Dacă o clasă este extinsă, ea moștenește toate proprietățile și comportamentele publice și protejate și acele comportamente pot fi suprascrise de subclasă. Dar dacă o clasă este cuprinsă într-o altă clasă, containerul nu are capacitatea de a schimba sau de a adăuga un comportament conținutului conținut. Moștenirea reprezintă o relație "este-a" în PLO, în timp ce Compoziția reprezintă o relație "a-a".