Dedičstvo vs Kontajner
Dedičnosť a kontajnery sú dva dôležité pojmy, ktoré sa nachádzajú v OOP (príklad programovania orientovaného na objekty: C ++). Jednoducho povedané, kontajnery 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, Containership 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 kontajnery?
Kontajner 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. Kontajnery sa tiež označujú ako zloženie. V tomto príklade je možné povedať, že trieda A sa skladá z triedy B. V OOP predstavuje kontajnment 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).
Rozdiel medzi dedičstvom a kontajnerom
Aj keď Dedičnosť a Kontajner 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 Containership 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 vzťah „is-a“ v OOP, zatiaľ čo kontajnment predstavuje vzťah „has-a“.