U objektno orijentiranom računalnom programiranju i dizajnu, invarijanta klase je skup pravila koja se mogu koristiti za definiranje postoji li instanca objekta u valjanom stanju. Iz perspektive dizajna, to je skup granica između kojih podaci unutar objekta moraju pasti da bi se smatrali u ispravnom, funkcionalnom stanju. Može se definirati u projektnoj dokumentaciji ili komentarima izvornog koda ili, u nekim programskim jezicima, može se izravno implementirati u radnji računalni kod. Program koji koristi kodirane invarijante i tvrdnje može uzrokovati prestanak izvršavanja programa ili izbacivanje raznih pogrešaka kada uvjeti invarijante nisu ispunjeni. Za razliku od standardne provjere pogrešaka, invarijante klasa općenito se koriste samo u svrhu osiguravanja funkcioniranja unutarnje implementacije klase i obično nisu navedene u javnoj dokumentaciji ili programskim sučeljima.
S vrlo osnovne razine, invarijanta klase u biti je zbirka tvrdnji za klasu. Tvrdnja, opet jednostavnim riječima, je izjava koja provjerava neki dio stanja klase i mora procijeniti na istinito da bi se izvođenje programa nastavilo. Jedan primjer tvrdnje je izjava koja osigurava da je zadani cijeli broj uvijek između 1 i 10. Kada se koristi invarijanta klase, tvrdnje se vrednuju za sve relevantne dijelove podataka koje drži objekt, u biti potvrđujući da su svi podaci u objekt unutar definiranih raspona.
U mnogim slučajevima, korištenje invarijante klase jako nalikuje standardnoj provjeri pogreške, u kojoj se varijable mjere kako bi se osiguralo da su unutar upotrebljivih granica ili da nisu nulte. Međutim, razlika između korištenja invarijanti klasa i standardne provjere pogrešaka je u tome što se invarijante i tvrdnje uglavnom koriste za hvatanje pogrešaka koje se ne bi trebale pojaviti osim ako ne postoji intrinzična greška u kodu. Druga razlika je u tome što standardna provjera grešaka obično uključuje oporavak i promjene u tijeku kontrole programa, dok bi rezultat nepromjenjivog kvara trebao biti završetak programa. Razlog zašto se većina programa prekida kada provjera nepromjenjivosti klase ne uspije je taj što je objekt u kompromitiranom stanju i nije u stanju, s gledišta dizajna, ispuniti svoje preduvjete i naknadne uvjete potrebne za pridržavanje ugovora o dizajnu.
Jedno od svojstava invarijante klase u objektno orijentiranim programskim jezicima u kojima su oni implicitno definirani je da je invarijanta mehanizam naslijeđen od bilo koje podklase. To sprječava podklasu da nadjača sve provjere invarijantnosti koje se izvode u roditeljskoj klasi. U konačnici, to znači da potklasa nije u stanju prekinuti ugovor o dizajnu koji je uspostavila nadklasa, što bi moglo uzrokovati nepredvidive rezultate ili teško pronaći programske pogreške.