I programmering är oföränderlig ett objekt vars tillstånd inte kan ändras efter skapandet.
I funktionell programmering är alla (när det gäller rena språk) eller nästan alla (i fallet med orena språk ) data i ett program, både lokala och globala, oföränderliga. Å ena sidan ökar detta avsevärt programstabiliteten genom att förenkla den formella verifieringen av program. Å andra sidan gör detta det svårt att lösa ett antal problem (av vilka det oftast noteras är uppgiften att implementera ett användargränssnitt , vilket i huvudsak är ett föränderligt tillstånd), vilket tvingar språkets typsystem att bli mer komplicerade - till exempel monader eller unika typer .
I objektorienterad programmering skapas oföränderliga objekt genom ett lämpligt designmönster .
Oföränderliga objekt är intressanta, till exempel eftersom de är trådsäkra .
Ett objekt kan vara helt eller delvis oföränderligt. Till exempel, genom att tillämpa const- direktivet på vilken medlem av en klass som helst i C++ blir objektet delvis oföränderligt. I vissa fall anses ett objekt vara oföränderligt ur klassens användares synvinkel, även om dess interna fält ändras . Vanligtvis får ett oföränderligt objekt alla interna värden under initiering, eller så ställs värdena in i flera steg, men innan objektet används.