Skip to main content

Co je složení nad dědictvím?

Složení nad dědictvím je metodika programování, která se používá v objektově orientovaných programovacích jazycích, která pomáhá navázat dynamičtější a proměnlivější vztahy mezi objekty v aplikaci.Základním formátem pro složení nad dědictvím je zahrnutí instance objektu uvnitř jiného objektu.To se zřetelně liší od objektově orientované metody dědičnosti, ale může sloužit stejnému účelu v mnoha modelech.Mezi výhody složení oproti dědičnosti patří dobře definovaná hranice mezi kompostovanými objekty a objekty obalů, schopnost změnit implementaci objektu, aniž by to ovlivnilo celou dědičnou hierarchii, a méně restriktivní rámec pro počáteční návrh programu.Některé z komplikací by však mohly zahrnovat potíže s serializací a příliš složité struktury ve velkých zavedených programech.Dědičnost je ústřední mechanismus v objektově orientovaném programování a umožňuje jednomu objektu zdědit všechna data a metody svého rodiče, které pak může přidat, modifikovat nebo rozšířit svou vlastní implementací.Příkladem designu založeného na dědictví by mohl být s programem, který má jednu hlavní třídu, která je definuje auto a modeluje některé obecné atributy všech automobilů.Třída pro každou jednotlivou značku automobilu je poté vyrobeno jako potomek hlavní třídy, ale definuje konkrétní informace, jako je velikost motoru, kapacita paliva nebo jiné informace specifické pro konkrétní značku automobilu.

Složení je vyjádřeno zahrnutím objektuinstance v jiných objektech.Pokud existuje hlavní třída, která definuje obecné auto, pak namísto vytváření podtříd pro konkrétní značky automobilů by mohla hlavní třída místo toho obsahovat instance jiných objektů, které automobily definují konkrétněji.To by mohlo znamenat, že hlavní třída automobilu by mohla obsahovat objekt pro typ motoru a jeden pro palivovou kapacitu, která by byla nastavena, když je třída použita k vytvoření instance konkrétní značky automobilu.

S složením nad dědictvím,Objekty, které jsou obsaženy v hlavní třídě, nesouvisejí přímo s hlavní třídou, což vývojářům dává svobodu změnit způsob, jakým jednotlivé objekty fungují.Problém, který složení nad dědictvím může pomoci zabránit, je situace, kdy může být strom dědictví příliš hluboký, což znamená, že jakékoli úpravy třídy ve stromu by mohly vyžadovat změny po délce stromu.Ne všechny objektově orientované jazyky mají podporu pro více dědictví a složení nad dědictvím je metoda, kterou lze použít k vyřešení tohoto omezení.