Skip to main content

Co je invariantní třída?

V objektově orientovaném počítačovém programování a designu je invariantní třída 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 třídní invarianty 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í rozhraní.

Z velmi základní úrovně, třída invariantníV podstatě je sbírka tvrzení pro 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 tvrzení vyhodnocena pro všechny příslušné části údajů držených objektem, což v podstatě potvrzuje, že všechna data vObjekt je v definovaných rozsazích.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ším rozdílem je, že standardní kontrola chyb má tendenci zahrnovat zotavení a změny v toku kontroly 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.

jeden z nichVlastnosti 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řídami.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 superclass, která by mohla způsobit nepředvídatelné výsledky nebo těžko dostupné chyby programu.