Rozdiel medzi dedičstvom a zložením

Dedičnosť vs Zloženie

Dedičnosť a zloženie sú dva dôležité pojmy, ktoré sa nachádzajú v OOP (Object Oriented Programming). Jednoducho povedané, zloženie aj dedičstvo sa zaoberajú poskytovaním ďalších vlastností alebo správania sa triede. Dedičnosť je schopnosť triedy zdediť vlastnosti a správanie od materskej triedy jej rozšírením. Na druhej strane Zloženie je schopnosť triedy obsahovať objekty rôznych tried ako údaje člena.

Čo je dedičstvo?

Ako je uvedené vyššie, dedičnosť je schopnosť triedy zdediť vlastnosti a správanie od materskej triedy jej rozšírením. Dedičnosť v zásade poskytuje opakované použitie kódu tým, že umožňuje rozširovať vlastnosti a správanie existujúcej triedy o novo definovanú triedu. Ak trieda A presahuje B, potom sa trieda B nazýva nadradená trieda (alebo nadtrieda) a trieda A sa nazýva podradená trieda (alebo odvodená trieda / podtrieda). V tomto príklade môže trieda A zdediť všetky verejné a chránené atribúty a metódy nadtriedy (B). Podtrieda môže voliteľne potlačiť (poskytnúť novú alebo rozšírenú funkčnosť metód) správanie zdedené z nadradenej triedy.

Dedičstvo predstavuje v OOP vzťah „is-a“. To v podstate znamená, že A je tiež B. Inými slovami, B môže byť trieda so všeobecným popisom určitej entity v reálnom svete, ale A špecifikuje určitú špecializáciu. Pri problémoch s programovaním v reálnom svete by sa trieda Person mohla rozšíriť na vytvorenie triedy Employee. Toto sa nazýva špecializácia. Ale najskôr by ste mohli vytvoriť triedu Zamestnanci a potom ju zovšeobecniť do triedy Person (t. J. Zovšeobecnenie). V tomto príklade bude mať zamestnanec všetky vlastnosti a správanie sa osoby (t. J. Zamestnanec je tiež osoba) a môže obsahovať aj niektoré ďalšie funkcie (takže osoba nie je zamestnancom)..

Čo je zloženie?

Zloženie je schopnosť triedy obsahovať objekty rôznych tried ako údaje člena. Napríklad trieda A by mohla obsahovať predmet triedy B ako člen. Tu môžu byť všetky verejné metódy (alebo funkcie) definované v B vykonané v rámci triedy A. Trieda A sa stáva kontajnerom, zatiaľ čo trieda B sa stáva obsiahnutou triedou. Zloženie sa tiež označuje ako kontajnery. V tomto príklade je možné povedať, že trieda A sa skladá z triedy B. V OOP predstavuje kompozícia vzťah „má a“. Je dôležité poznamenať, že hoci kontajner má prístup na vykonávanie všetkých verejných metód obsiahnutej triedy, nie je schopný zmeniť alebo poskytnúť ďalšie funkcie. Pokiaľ ide o problém programovania v reálnom svete, objekt triedy TextBox môže byť obsiahnutý v triede Form, a teda možno povedať, že Formulár obsahuje TextBox (alebo alternatívne, Formulár sa skladá z TextBoxu).

Aký je rozdiel medzi dedičstvom a zložením?

Hoci dedičnosť a zloženie sú dva koncepty OOP, sú dosť odlišné v tom, čo umožňujú programátorovi dosiahnuť. Dedičnosť je schopnosť triedy zdediť vlastnosti a správanie z nadradenej triedy jej rozšírením, zatiaľ čo Zloženie je schopnosť triedy obsahovať objekty rôznych tried ako údaje člena. Ak je trieda rozšírená, dedí všetky verejné a chránené vlastnosti / správanie a tieto správanie môže byť potlačené podtriedou. Ale ak je trieda obsiahnutá v inej, kontajner nedostane schopnosť meniť alebo pridať správanie k obsiahnutým. Dedičstvo predstavuje v OOP vzťah „is-a“, zatiaľ čo zloženie predstavuje vzťah „has-a“.