Terimi durumu 'da tüm tam olarak tarif hassas olabilir, çeşitli duyu, kullanılabilmektedir. Nasıl oldukça açık hale getirmek için kağıt bir tanımını içerdiğini, bu nedenle önemli olduğunu sen terimini kullanıyorlardı. Aşağıda, bir nesnenin durumunun benzersiz bir tanımını sunmuyorum, bunun yerine farklı bağlamlarda uygun olabilecek bir dizi düşünme biçimini çizmeye çalışıyorum.
Ancak, öncelikle, ' nesne ' ile ne demek istediğinizi düşünmeniz gerekir : kavramsal bir nesne mi, yani modellemeye çalıştığınız bazı varlıkları mı yoksa belirli bir programdaki bir sınıfın örneğini mi düşünüyorsunuz; belki de farklı zamanlarda farklı nesnelere veya bir sisteme atıfta bulunabilecek bir değişkenin durumunu düşünmek isteyebilirsiniz, belki de belirli bir kullanıcı arayüzü üzerinden erişebilirsiniz.
OOP'ta bir nesnenin durumunu tanımlamanın zorluğunun bir kısmı, belirli bir dilde varlıkları modellediğimizde, bu dilin, genellikle aynı varlığın bir parçası olan nesne niteliklerini kavramsal olmayan diğerlerinden ayırmamıza izin vermemesidir. Örneğin, bağlantılı bir liste, kavramsal olarak liste tek bir nesne olmasına rağmen , bir sonrakine (ve belki de daha önceki) işaretçiler içeren Car
bir dizi- Link
nesneden oluşur Link
; bağlantılar ayrıcaCar
- nesneler veya işaretçiler içerir, ancak bu durumda bağlantılı nesneler listenin bir parçası olmaktan ziyade kavramsal olarak ayrıdır; Ancak, son değişiklikler listesinde değişiklikler yalnızca listede mevcut olabilir ve bunun bir parçası olarak değerlendirilebilir. Bu çeşitli durumlarda, bir nesnenin durumunu bağlantılı nesnelerinkini içerecek şekilde düşünüp düşünmeyeceğimize karar vermeliyiz. Ayrıca, Car
a'nın bir bağlantısı olabilir Registering_Authority
- muhtemelen, kayıt yetkisi web sitesinin URL'sini değiştirdiğinde aracın durumunu değiştirmeyi düşünmüyoruz. Uygulama dili, farklı bağlantı türlerini ayırt etmemize izin vermedikçe, bir nesnenin durumunu yalnızca dil açısından genel olarak tanımlamak mümkün olmayacaktır.
' Dış ' veya ' işlevsel ' durum 'nasıl davrandığı' olarak tanımlanabilir, ör. yöntem çağrılarına veya bir kullanıcı arayüzüne nasıl tepki verdiğini. Sınıf örneği olarak bir nesne için bu tanım, nesnenin ait olduğu türüne bağlıdır: a olarak görüldüğü gibi Circle
,Coloured_Circle
görünür değildir ve dolayısıyla durumu ile ilgisi yoktur. Bununla ilgili bir zorluk, 'nasıl tepki verdiğinin' döndürülen değerler açısından tanımlanması gerekebileceğidir ve bu 'değerler' diğer nesnelerin durumları olabilir. Bunu resmileştirmenin bir yolu, bir nesnenin gömülü olduğu bir sistemin gelecekteki tüm olası yürütmelerinin aynı olması durumunda, girişlerden o sisteme çıkışlar arasında aynı eşlemeyle sonuçlanmasıdır. Bu çevreleme sisteminin, ortamından bağımsız olarak yürütülebilen müstakil bir sistem olması gerekebilir; diğer yandan, söz konusu nesnenin kendisi kadar küçük olmasına izin verilebilir. Her durumda, matematiksel bir yaklaşım daha sonra bir durumu,
' Dahili ' durum , temsilin durumu olarak tanımlanabilir. İlk denemenin görünüşte dairesel fakat belki de yardımcı olduğu söylenebilir: 'Bir nesnenin iç durumu, üyelerinin durumudur'. Burada, temsilin önemli yönlerini önemsiz olanlardan ayırmaya dikkat etmeliyiz: en düşük seviyede, bir nesnenin temsili diğer nesnelerin adreslerini de içerebilir, ancak böyle bir adresteki bir değişikliği dikkate almanın pek mümkün olmaması muhtemeldir. devlet değişikliği olarak. Öte yandan, bir sorgu sonucu için önbellek durumunda bir değişiklik olurken, (yukarıda açıklandığı gibi) işlevsel durum üzerinde hiçbir fark yaratmazken, performans testleri dikkate alındığında önemli olacaktır.