değişmez

Nesne yönelimli ve işlevsel programlamada, değişmez bir nesne, yaratıldıktan sonra durumu değiştirilemeyen bir nesnedir. Değişmez bir nesnenin genel API'si, ömrü boyunca aynı şekilde davranacağını garanti eder. Bazı durumlarda, bir nesne, dahili olarak kullanılan öznitelikler değişse de, ancak nesnenin durumu harici bir bakış açısından değişmemiş görünse bile, değişmez olarak kabul edilir. Aşağıda temel bir değişmez sınıf örneği verilmiştir:

sınıf Kullanıcı {

özel final Uzun İD;
özel final String adı;

Kullanıcı (Uzun id, dizi isim) {
bu.id = İD;
bu.isim = adı;
}}

Tüm alanlar nihaidir, yani derleyiciye değerlerinin başlatıldıktan sonra değişmemesi gerektiği söylenir. Tüm alan değerleri daha sonra kurucuya aktarılır.

Değişmez nesne faydaları

Nesne değiştirilemez olduğu için kullanıcılar ondan ne bekleyeceklerini tam olarak bilirler. Kod değiştirilemez, yani çalışma zamanı hatalarına neden olabilecek tutarsızlıklara yol açma fırsatı yoktur. Değişmez nesneler iş parçacığı açısından güvenlidir, bu nedenle senkronizasyon sorunları önlenir. Tasarımı, uygulaması ve kullanımı değiştirilebilir sınıflardan daha kolaydır.

Değişmez bir nesne oluşturulduktan ve doğrulandıktan sonra, başka hiçbir iş parçacığı veya arka plan işlemi, kullanıcının doğrudan bilgisi olmadan nesneyi değiştiremez. Bu, yüksek güvenlik gerektiren programlar için kullanışlıdır. Bir sorun ortaya çıktığında, değişmez nesnelerle hata ayıklama daha kolaydır çünkü bir hatanın kaynağı kolayca izlenebilir.

Değişmez ve değiştirilebilir nesneler

Değişmez nesneler durumlarını değiştiremezken, değiştirilebilir nesneler olabilir. Değişken nesneler, bir nesnenin içeriğini değiştirmek için yöntemler sağlar ve değişmez nesneler kadar iş parçacığı açısından güvenli değildir.

Java'da, değiştirilebilir nesnelerin örnekleri arasında StringBuilder ve java.util.Date bulunur. Değişmez nesnelerin örnekleri, tüm eski sınıfları, sarmalayıcı sınıflarını ve dize sınıflarını içerir.

Python'da, değiştirilebilir türlerin örnekleri list, dikte ve küme içerir. Python'daki değişmez türler arasında int, float, bool, string, unicode ve tuple bulunur.