Polymorfismus tříd

21.12.2017

V ObjectGears můžeme použít dědičnost tříd. To nám umožní definovat společné vlastnosti několika tříd na jednom místě a zajistit, aby tyto vlastnosti měly všechny třídy. Vezměme si například Configuration management. Všechny typy konfiguračních položek mají společné vlastnosti jako např. unikátní kód, vlastníka konfigurační položky, datum konce životní cyklu položky nebo různé obecné vztahy k ostatním konfiguračním položkám, jak je definuje ITIL.

Zároveň mají naprosto odlišné vlastnosti. Např. u databáze nás bude zajímat na jakém databázovém serveru se nachází, její velikost a zálovací plán. U zařízení (hardware) je důležité, kde je umístěno, v jaké bezpečnostní zóně se nachází a dokdy máme zaplacenu podporu od dodavatele. U serveru pak jeho název, příslušnost k doméně, operační systém, příslušnost k farmě nebo clusteru, zařízení, na kterém fyzicky běží, CPU, RAM, disky...

Definujeme tedy předka (Konfigurační položka) se společnými vlastnostmi a potomky (databáze, zařízení, server, rack, datacentrum, aplikace, proces...), kteří obsahují specifické vlastnosti. Potomek může mít další potomky. Počet úrovní dědičnosti není omezen. Při zobrazení záznamu dané položky, pak vidíme jak vlastnosti zděděné, tak vlastnosti  definované v konkrétním potomku.

Vztah položek v ObjectGears můžeme také znázornit pomocí schématu. Každá třída ve schématu odkazuje odkazy na svoji definici, data a přehled sloupců (vlastností).

polymorfismus tříd v ObjectGears

Jak se nám bude hodit polymorfismus? U všech konfiguračních položek budeme chtít znát jejich stav a zobrazit ho formou semaforu. Tuto vlastnost tedy definujeme na společném předku. U každého typu položky však příslušný stav bude záviset na specifických vlastnostech konkrétních potomků. Proto definici stavu (společné zděděné vlastnosti) provedeme až v potomcích (pomocí pravidel tříd).