Rozdíl mezi dědičností a složením

Rozdíl mezi dědičností a složením
Rozdíl mezi dědičností a složením

Video: Rozdíl mezi dědičností a složením

Video: Rozdíl mezi dědičností a složením
Video: Badatelna – 33. díl: Válka proudů aneb Tesla vs. Edison (střídavý a stejnosměrný proud) 2024, Červenec
Anonim

Dědičnost vs složení

Dědičnost a kompozice jsou dva důležité pojmy, které se nacházejí v OOP (Object Oriented Programming). Jednoduše řečeno, jak složení, tak 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, Composition je schopnost třídy obsahovat objekty různých tříd jako členská data.

Co je dědičnost?

Jak bylo 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ě zajišťuje opětovné 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 nadtřída) a třída A se nazývá podřízená třída (nebo odvozená třída/podtřída). V tomto příkladu scénáře třída A zdědí všechny veřejné a chráněné atributy a metody nadtřídy (B). Podtřída může volitelně přepsat (poskytnout metodám novou nebo rozšířenou funkčnost) chování zděděné od nadřazené třídy.

Dědičnost představuje vztah „je-a“v OOP. 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 reálného světa, ale A specifikuje určitou specializaci. V reálném světě programátorského problému by třída Person mohla být rozšířena a vytvořit třídu Employee. Tomu se říká specializace. Ale můžete také nejprve vytvořit třídu Zaměstnanec a poté ji zobecnit také na třídu Osoba (tj. E. 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 obsahovat také některé další funkce (takže Osoba není Zaměstnanec).

Co je složení?

Složení je schopnost třídy obsahovat objekty různých tříd jako členská data. 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ádět v rámci třídy A. Třída A se stává kontejnerem, zatímco třída B se stává obsaženou třídou. Složení je také označováno jako Containership. V tomto příkladu lze říci, že třída A se skládá z třídy B. V OOP představuje Composition vztah „má-a“. Je důležité poznamenat, že i když má kontejner přístup ke spuštění všech veřejných metod obsažené třídy, není schopen je měnit ani poskytovat další funkce. Pokud jde o problém programování v reálném světě, objekt třídy TextBox může být obsažen ve třídě Form, a lze tedy říci, že Formulář obsahuje TextBox (nebo alternativně, Formulář se skládá z TextBoxu).

Jaký je rozdíl mezi dědičností a složením?

I když jsou dědičnost a kompozice dva koncepty OOP, jsou zcela odlišné v tom, čeho programátorovi umožňují dosáhnout. Dědičnost je schopnost třídy zdědit vlastnosti a chování od nadřazené třídy jejím rozšířením, zatímco Composition 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í mohou být přepsána podtřídou. Ale pokud je třída obsažena v jiné, kontejner nezíská možnost změnit nebo přidat chování obsažené. Dědičnost představuje vztah „je-a“v OOP, zatímco složení představuje vztah „má-a“.

Doporučuje: