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: Abstractizare, încapsulare, moștenire, polimorfism | Tutorial Java începători #6 2024, Aprilie
Anonim

Moștenire vs compoziție

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 ocupă de furnizarea de proprietăți sau comportament suplimentar unei clase. Moștenirea este abilitatea pentru o clasă 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 de membru.

Ce este Moștenirea?

Așa cum s-a menționat mai sus, Moștenirea este abilitatea pentru o clasă 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 extinde B, atunci clasa B se numește clasa părinte (sau super clasă) și clasa A se numește clasa copil (sau clasă derivată / subclasă). În acest exemplu de scenariu, clasa A va moșteni toate atributele și metodele publice și protejate ale super clasei (B). Subclasa poate în mod opțional să suprascrie (să ofere funcționalități noi sau extinse metodelor) comportamentul moștenit din clasa părinte.

Moștenirea reprezintă o relație „este-o” în POO. Aceasta înseamnă, în esență, că A este și 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 Person ar putea fi extinsă pentru a crea clasa Employee. Aceasta se numește specializare. Dar ați putea crea mai întâi clasa Angajați și apoi să o generalizați și la o clasă Persoană (adică generalizare). În acest exemplu, Angajatul va avea toate proprietățile și comportamentul persoanei (adică Angajatul este, de asemenea, o persoană) și poate conține 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 membre. De exemplu, clasa A poate 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 Container. Î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 reținut că, chiar dacă containerul are acces pentru a executa toate metodele publice din clasa conținută, nu este capabil să modifice sau să ofere funcționalități suplimentare. Când vine vorba de o problemă de programare 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 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 permit programatorului să realizeze. Moștenirea este abilitatea pentru o clasă 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 diferite clase ca date de membru. Dacă o clasă este extinsă, aceasta moștenește toate proprietățile / comportamentul public și protejat, iar aceste comportamente pot fi suprascrise de subclasă. Dar dacă o clasă este conținută într-o altă, containerul nu are capacitatea de a schimba sau adăuga comportament la conținut. Moștenirea reprezintă o relație „este-o” în POO, în timp ce Compoziția reprezintă o relație „are-o”.

Recomandat: