OOP'ta bir nesnenin durumunun tanımı


11

Nesne yönelimli programlamada (kağıt için) "nesnenin durumu" nun özlü bir tanımına ihtiyacım var.

Yaklaşık yarım gün boyunca bu konuda alıntı yapabileceğim bir makale aradım, ancak bir tane bulamadım. Bulduğum tüm makaleler çoğunlukla nesne yönelimli programlama üzerine genel yazılardı ve bir nesnenin durumunu tanımlamadılar.

Emin değilim, ama en iyi tahminim şöyle bir şeydir: Bir nesnenin durumu, nesnenin örnek değişkenlerinin durumu tarafından tanımlanır.

Bir nesnenin durumunun tanımını ve / veya konuyla ilgili bir referans arıyorum.

(btw, kavramı "nesne durumu" olarak adlandırabilir miyim yoksa bu nadir mi?)


Bence burada belirsizliğe yer var, böylece makalenizde tam olarak 'devlet' ile ne demek istediğinizi belirtmelisiniz; Eğer bunu yapamazsan, belki de makaleni serbest bırakacak bir konumda değildin.
PJTraill

Yanıtlar:


9

G. Booch'un "Nesneye Dayalı Analiz ve Tasarım" kitabına bakabilirsiniz (ve alıntı yapabilirsiniz) :

... Bir nesne, durumu, davranışı ve kimliği olan bir varlıktır. Benzer nesnelerin yapısı ve davranışı ortak sınıflarında tanımlanır. Örnek ve nesne terimleri birbirinin yerine kullanılabilir.

İzleyen bölümlerde devlet, davranış ve kimlik kavramlarını daha ayrıntılı olarak ele alacağız. ...

Ve devlet kavramını tanımlayan bütün bir alt bölüm var :

... Bu örnekte, aşağıdaki düşük seviye tanımını oluşturabiliriz.

Bir nesnenin durumu, nesnenin tüm (genellikle statik) özelliklerinin yanı sıra bu özelliklerin her birinin geçerli (genellikle dinamik) değerlerini de kapsar ...


4
Bulanık, her zamanki gibi. Booth'un muhtemelen ne demek istediği: bir devlet, bu değişkenlere değerlerin atanmasıdır.
reinierpost

3

Ayrıca, bir nesnenin durumunun, yöntemlerle gözlemlenenin belirlediği gibi "soyut" bir varlık olduğunu da unutmayın. Örneğin, bir karma tablosu uygulayan bir nesnenin durumu, karma tabloda depolanan değerlerin toplamı değil durumudur .


2

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 Carbir dizi- Linknesneden 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, Cara'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_Circlegö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.


Bu, bulduğum nesne durumu hakkında en yararlı cevaplardan biri. Çevrimiçi bir PDF belgesi var ve çoğunlukla bu. Özellikle temsil ile ilgili kısım (iç devlet) Gözlerimi açıyor ve nesne hakkında bana farklı şeyler yapıyor.
Miroslav Trninic

1

IBM'in, "durum" kelimesini birbirine çok benzeyen çeşitli tanımlarda tanımlayan bir sözlüğü vardır. Özellikle Nesneye Yönelik Programlama ile ilgili olduklarını belirtmezler, ancak bu bağlamda tahmin edilebilir ve kullanılabilir.

Def 3: Bir nesnenin yaşam döngüsünde, o nesnenin durumunu tanımlayan bir aşama.

Def 5: Bir nesnenin ömrü boyunca, bir koşulu yerine getirdiği, bir faaliyet gerçekleştirdiği veya bir olayı beklediği bir durum veya durum.

Def 8: Bir nesnenin genel ve özel veri üyelerinde kendini gösteren ve iki kategoriye ayrılabilen özelliği: temel durum ve temel olmayan durum.

Def 9: Bir iş durumu makinesinde, bir ticari işlem oluşturmak üzere sırayla düzenlenen birkaç ayrı bireysel aşamadan biri.

Def 10: Uygun bir darbe uygulanana kadar devrenin kaldığı bir durum.

Webster Yeni Dünya Koleji Sözlüğü 'durumu' şu şekilde tanımlar:

Belirli bir zamanda bir kişiyi veya şeyi karakterize eden bir dizi koşul veya nitelik; varlığın yolu veya şekli: koşul

Tüm bunların ortak paydası zamandır. Zaman ilerledikçe durum değişir. Değişkenlerin doğası budur. Birisi "Mevcut durumunuz nedir?" Bugün evli olduğunu söyleyebilirsin ve yarın bekar olabilirsin.

Tüm bu tanımlar göz önüne alındığında, bir 'özniteliğin' bir nesnenin özniteliklerinin değerleri, yani özellikleri / değişkenleri tarafından belirlenen belirli bir noktada var olma yolu olduğu tahmin edilebilir.

Bundan daha basit olduğunu sanmıyorum.


Belirsizlik potansiyelini diğer cevaplardan daha açık hale getirdiğinden, bu birkaç oylamaya değer.
PJTraill

Önceki yorumum: O zamandan beri belirsizliği daha kapsamlı bir şekilde tanımlamak için kendi cevabımı ekledim .
PJTraill

0

Nesneye yönelik bir sistem, kod ve veri terimlerini bir "nesne" kavramını kullanarak bütünleştirir. Bir nesnenin durumu (verileri) ve davranışı (kodu) vardır. Bu nedenle, nesnenin durumları, verileri içeren nesnenin içindeki örneklerdir (değişkenlerdir).


Bu doğrudur, ancak mevcut cevaplara çok fazla şey eklemek gereksizdir.
David Richerby

1
Belki birini anlamak kolay olur :)
Syed MEhran Hussain

2
Bu yanlış. Ne demek istediğimi düşünüyorum, devlet: bu değişkenlere değerlerin atanmasıdır.
reinierpost
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.