Dědičnost vs Kontejner
Dědičnost a kontejnerová doprava jsou dva důležité koncepty nalezené v OOP (Příklad programování orientovaného na objekt: C ++). Jednoduše řečeno, oba kontejnery i dědičnost se zabývají poskytováním dalších vlastností nebo chování třídě. Dědičnost je schopnost třídy zdědit vlastnosti a chování od nadřazené třídy jejím rozšířením. Na druhou stranu Containership je schopnost třídy obsahovat jako členská data objekty různých tříd.
Co je dědičnost?
Jak je uvedeno výše, dědičnost je schopnost třídy zdědit vlastnosti a chování od nadřazené třídy jejím rozšířením. Dědičnost v podstatě poskytuje opakované použití kódu tím, že umožňuje rozšíření vlastností a chování existující třídy o nově definovanou třídu. Pokud třída A rozšiřuje B, pak se třída B nazývá nadřazená třída (nebo nadřazená třída) a třída A se nazývá podřízená třída (nebo odvozená třída / podtřída). V tomto příkladu scénář třída A zdědí všechny veřejné a chráněné atributy a metody nadřazené třídy (B). Podtřída může volitelně potlačit (poskytnout nové nebo rozšířené funkce metodám) chování zděděné z nadřazené třídy. Dědičnost představuje v OOP vztah „is-a“. To v podstatě znamená, že A je také B. Jinými slovy, B může být třída s obecným popisem určité entity skutečného světa, ale A specifikuje určitou specializaci. Při programování v reálném světě může být třída Person rozšířena o třídu Employee. Tomu se říká specializace. Mohli byste ale také nejprve vytvořit třídu Zaměstnanci a poté ji zobecnit také do třídy Osob (tj. Zobecnění). V tomto příkladu bude mít zaměstnanec všechny vlastnosti a chování osoby (tj. Zaměstnanec je také osoba) a může také obsahovat některé další funkce (takže osoba není zaměstnancem)..
Co je kontejnerová loď?
Containership je schopnost třídy obsahovat objekty různých tříd jako data členů. Například třída A může obsahovat objekt třídy B jako člen. Zde lze všechny veřejné metody (nebo funkce) definované v B provést ve třídě A. Třída A se stává kontejnerem, zatímco třída B se stává obsaženou třídou. Kontejner je také označován jako Složení. V tomto příkladu lze říci, že třída A je složena ze třídy B. V OOP představuje kontejnery vztah „má-a“. Je důležité poznamenat, že ačkoli kontejner má přístup k provádění všech veřejných metod obsažené třídy, není schopen změnit nebo poskytnout další funkce. Pokud jde o problém s programováním ve skutečném světě, objekt třídy TextBox může být obsažen ve třídě Form, a tak lze říci, že Formulář obsahuje TextBox (nebo alternativně je formulář složen z TextBoxu).
Rozdíl mezi dědičností a kontejnerem
Ačkoli dědičnost a kontejner jsou dva koncepty OOP, jsou v tom, co umožňují programátorům, docela odlišné. Dědičnost je schopnost třídy zdědit vlastnosti a chování z nadřazené třídy jejím rozšířením, zatímco Containership je schopnost třídy obsahovat objekty různých tříd jako členská data. Pokud je třída rozšířena, zdědí všechny veřejné a chráněné vlastnosti / chování a tato chování může být podtřídou potlačena. Ale pokud je třída obsažena v jiné, kontejner nedostane schopnost změnit nebo přidat chování k obsažené. Dědičnost představuje vztah „is-a“ v OOP, zatímco kontejnerový kontejner představuje vztah „has-a“.