Objektisuuntautuneessa ohjelmoinnissa muuttumaton objekti on objekti, jonka ominaisuuksia ei voida muuttaa sen luomisen jälkeen. Useimmat esineet ovat sitä vastoin muuttuvia esineitä, mikä tarkoittaa, että joitakin tai kaikkia niiden ominaisuuksia voidaan muuttaa vapaasti luomisen jälkeen. Monilla tietokonekielillä on mahdollisuus luoda muuttumattomia objekteja, kuten Java, C ++, erlang, Tcl ja scala.
Muuttumaton objekti voidaan luoda kahdella tavalla: luomalla luokka, joka on määritelmän mukaan muuttumaton, tai julistamalla nimenomaisesti muuttuva objekti muuttumattomaksi. Muuttumattoman luokan luomisen menetelmä vaihtelee käytettävän tietokoneen kielen mukaan. Kielestä riippumatta muuttumattomalla luokalla ei saa olla menetelmiä, jotka voivat muuttaa sen sisäisiä tietoja, eikä menetelmiä voida muuttaa – eli ohittaa tai ylikuormittaa – tavalla, joka muuttaa sen sisäisiä tietoja. Tämä on monimutkaisempi kahdesta lähestymistavasta. Toisaalta luodakseen muuttumattoman objektin muutoin muuttuvasta objektista voidaan usein käyttää avainsanaa objektin nimeämiseksi muuttumattomana.
Esimerkiksi muuttumaton objektin luominen Javassa perustuu vahvasti “lopulliseen” avainsanaan. Nopea tapa tehdä luokasta muuttumaton Javassa on julistaa luokka sekä kaikki sen menetelmät ja tietojäsenet lopullisiksi. Samanlaista strategiaa voidaan käyttää myös C ++: ssa avainsanalla “const”. Nämä lähestymistavat luokan sisällöstä riippuen eivät kuitenkaan välttämättä ole parhaita. Yleensä objektit voidaan yleensä muuttaa muuttumattomiksi huolehtimalla niiden sisäisistä tiedoista huolellisesti.
Muuttumattoman objektin tekeminen avainsanalla, kuten yllä olevassa esimerkissä, on usein paljon helpompaa kuin koko luokan kirjoittaminen muuttumattomaksi. Tämän lähestymistavan käyttämisellä on kuitenkin omat vaaransa. Kun nimenomaisesti määritetään muuttumaton objekti tällä tavalla, on tärkeää, että ohjelmoija varmistaa, että kaikki sopivat ominaisuudet ja tiedot on sisällytetty objektiin ensin. Epätäydelliseen kohteeseen luottaminen voi olla vaarallista, varsinkin jos siitä puuttuu olennainen tieto.
Jos kohde on muutettavissa, mutta vaatii muuttamattoman datan luomista oikein, muuttumaton data on alustettava ennen muutettavan objektin luomista. Muuttamattomat objektit ovat aina muuttumattomia, olivatpa ne sitten data -arvoja tai suuria esineitä, ja niitä on aina käsiteltävä sellaisina. Yleensä muuttumatonta objektia ei voida tehdä muuttuvaksi sen luomisen jälkeen, vaikka ne saatetaan joskus kopioida muuttuvina kohteina. Yleensä voidaan olettaa, että muuttumaton esine ja kaikki sen kopiot ovat myös muuttumattomia, mikä voi estää data- tai muistiongelmia.