Co je invariantní třída?
V objektově orientovaném počítačovém programování a designu je třída invariantní sada pravidel, která lze použít k definování, zda instance objektu existuje v platném stavu. Z pohledu designu je invariantní třída sada hranic, mezi nimiž musí data v objektu upadnout, aby byla považována za správný funkční stav. Invariant třídy lze definovat v návrhové dokumentaci nebo komentářích zdrojového kódu nebo v některých programovacích jazycích lze přímo implementovat do akčního počítačového kódu. Program, který používá kódované invarianty a tvrzení, může způsobit, že program ukončí provádění nebo vyvolává různé chyby, když nejsou splněny invariantní podmínky. Na rozdíl od standardní kontroly chyb se invarianty třídy obecně používají pouze za účelem zajištění toho, aby vnitřní implementace třídy fungovala, a obvykle nejsou uvedeny ve veřejné dokumentaci nebo programovacích rozhraních.
z velmi základní úrovně, je třída invariántní v podstatě sbírkou soupravpro třídu. Tvrzení, opět jednoduše, je prohlášení, které kontroluje určitou část stavu třídy a musí vyhodnotit, aby bylo možné provést provádění programu pokračovat. Jedním z příkladů tvrzení je prohlášení, které zajišťuje, že dané celé číslo je vždy mezi 1 a 10. Když je použita invariantní třída, jsou hodnocena tvrzení pro všechny příslušné části dat držených objektem, což v podstatě ověřuje, že všechna data v objektu jsou v definovaných rozsazích.
V mnoha případech, používání třídy invariantu, silně podobá standardní kontrole chyb, ve kterých se měří proměnné, aby se zajistilo, že jsou v použitelných hranicích nebo nejsou nulové. Rozdíl mezi používáním invariantů třídy a standardní kontrolou chyb je však to, že invarianty a tvrzení se používají převážně k zachycení chyb, které by neměly dojít, pokud v kódu není vlastní chyba. Další rozdíl je thPři standardní kontrole chyb má tendenci zahrnovat zotavení a změny v kontrolním toku programu, zatímco výsledkem invariantního selhání by mělo být ukončení programu. Důvod, proč většina programů končí, když invariantní kontrola třídy selže, je ten, že objekt je v kompromitovaném stavu a není schopen, od návrhového pohledu, až po splnění svých předpokladů a post-kondicí nezbytných k dodržování jeho návrhové smlouvy.
Jednou z vlastností invariantní třídy v objektově orientovaných programovacích jazycích, ve kterých jsou implicitně definovány, je to, že invariantní je mechanismus zděděný jakýmikoli podtřídy. Tím se zabrání podtřídě přepsat jakékoli invariantní kontroly, které jsou prováděny v nadřazené třídě. Nakonec to znamená, že podtřída není schopna přerušit smlouvu o návrhu stanovenou super třídou, která by mohla způsobit nepředvídatelné výsledky nebo těžko dostupné chyby programu.