Vad är ett obestämt objekt?

I objektorienterad programmering är ett immutable-objekt ett objekt vars egenskaper inte kan ändras efter att det har skapats. De flesta objekt är däremot muterbara objekt, vilket innebär att vissa eller alla deras egenskaper fritt kan ändras efter skapandet. En mängd datorspråk har möjlighet att skapa immutable-objekt, inklusive Java, C ++, erlang, Tcl och scala.

Ett immutable-objekt kan skapas på ett av två sätt: genom att skapa en klass som per definition är oföränderlig eller genom att uttryckligen förklara att ett annat muterbart objekt är oföränderligt. Metoden för att skapa en immutable klass varierar beroende på det datorspråk som används. Oavsett språk, får en immutable klass inte ha några metoder som kan ändra dess interna data och inget sätt att ändra metoder - dvs åsidosättas eller överbelastas - på ett sätt som skulle ändra dess interna data. Detta är den mer komplicerade av de två metoderna. För att skapa ett immutable-objekt från ett annars muterbart objekt, å andra sidan kan man ofta tillämpa ett nyckelord för att beteckna objektet som immutable.

Som ett exempel är immutable objektskapning i Java mycket beroende av det "slutliga" nyckelordet. Ett snabbt sätt att göra en klass immutable i Java är att förklara klassen, liksom alla dess metoder och datamedlemmar, som slutgiltiga. En liknande strategi kan också användas i C ++ med nyckelordet "const". Dessa metoder, beroende på klassinnehållet, kanske dock inte är de bästa. I allmänhet kan objekt vanligtvis göras oföränderliga genom noggrant underhåll av deras interna data.

Att göra ett immutable-objekt med hjälp av ett nyckelord, som i exemplet ovan, är ofta mycket lättare än att skriva en hel klass för att vara oföränderlig. Att använda denna strategi har dock sina faror. När man uttryckligen anger ett immutable-objekt på detta sätt är det viktigt för programmeraren att vara säker på att alla lämpliga egenskaper och data har införlivats först i objektet. Lita på ett ofullständigt objekt kan vara farligt, särskilt om det saknas en väsentlig information.

Om ett objekt är muterbara men kräver att immutable-data skapas ordentligt måste de immutable-data initieras innan det muterbara objektet kan göras. Oändliga objekt är alltid oföränderliga, oavsett om det är datavärden eller stora objekt, och måste alltid behandlas som sådana. I allmänhet kan ett immutable-objekt inte göras muterbart efter det har skapats, även om det ibland kan kopieras som muterbara objekt. Vanligtvis kan man anta att ett immutable-objekt och någon av dess kopior också är immutable, vilket kan förhindra data eller minnesproblem.

ANDRA SPRÅK

Hjälpte den här artikeln dig? Tack för feedbacken Tack för feedbacken

Hur kan vi hjälpa? Hur kan vi hjälpa?