Co je hierarchie třídy?
Hierarchie tříd, také nazývaná třídní taxonomie, je skupina souvisejících tříd, které jsou spojeny dědičností, aby dělaly podobné věci. Vrcholem hierarchie může být jediná základní třída, ze které jsou odvozeny všechny ostatní třídy pod ní, nebo hierarchie může mít více základních tříd, jejichž funkce se později sloučí do jedné nebo více odvozených tříd. Vztahy mezi třídami lze ilustrovat jako stromy a každý menší strom v rámci velké taxonomie lze také považovat za hierarchii.
Ne všechny hierarchie tříd mohou mít více kořenů a struktura jakékoli hierarchie tříd závisí do značné míry na jazyce, ve kterém je napsán. C ++ umožňuje vícenásobnou dědičnost, takže složité hierarchie mohou být vytvořeny z více kořenů a více stromů, které se navzájem slučují. Java®, na druhé straně, je omezena na jednu dědičnost, takže její třídní vztahy jsou obvykle jednodušší, postavené jako relativně samostatné stromy s jediným kořenem. Dědičnost rozhraní může přidat nějakou složitost hierarchii tříd v Java®, ale rozhraní se téměř nikdy nevyvolávají v tak komplexním rámci, že by to bylo jako sloučení stromů dohromady.
Složky hierarchie tříd se mohou lišit typem a funkcí, pokud jsou pravidla jazyka vždy dodržována s ohledem na dědičnost. Třídy v hierarchii mohou být veřejné, chráněné, abstraktní, konkrétní nebo virtuální. Mohou být také použita rozhraní, globální funkce a přátelé. V závislosti na počítačovém jazyce se některé z těchto typů mohou lépe dědit než jiné. Obecně jsou hierarchie velmi flexibilní a lze je použít mnoha způsoby k mnoha účelům.
Neexistují žádná tvrdá pravidla týkající se toho, kde konkrétní typy tříd musí být zařazeny do hierarchie. Jakákoli třída může představovat kterýkoli z výše uvedených typů. Obecně by poslední třídy v hierarchii, které nemají pod nimi odvozené třídy, měly být veřejné a konkrétní. Jelikož však mohou existovat i čistě abstraktní hierarchie tříd, jedná se pouze o pravidlo.
Ačkoli hierarchie tříd může být užitečným nástrojem k uspořádání kódu a zapouzdření funkcí, mohou nastat situace, kdy ponoření příliš hluboko do hierarchie může kód skutečně zaměnit, spíše než jej vyjasnit a usnadnit jeho údržbu. Budování robustního vztahu mezi mnoha třídami vyžaduje určitou míru předvídavosti; ačkoli to může být zpočátku snazší rozdělit kód na mnoho malých kusů, ty malé kousky mohou být později obtížnější zpracovat. Při správném sestavení pomáhá hierarchie tříd vývojářům i uživatelům při určování toho, jak třídy fungují. Pokud je postaven bez ohledu na údržbu a srozumitelnost, mnoho úrovní dědičnosti může být matoucí, když se ohlédneme a pochopíme.