Bir Örnek ve bir Nesne arasındaki fark nedir? Bir fark var mı yok mu?
Bir Örnek ve bir Nesne arasındaki fark nedir? Bir fark var mı yok mu?
Yanıtlar:
Örnek ve Nesne, Nesne Yönelimli Programlamadan alınmıştır .
Java, C ++ ve Smalltalk gibi bazı programlama dilleri için, kodu tanımlamak ve anlamak önemlidir. Yapılandırılmış Programlamada kullanılan diğer dillerde bu kavram mevcut değildir.
Bu, Yapısal Programlamadan bir görüştür. Zamanınızın çoğunu tüketmesi gereken önemli bir fark yok. Bazı insanların üzerine yazmak için çok fazla yer kaplayabileceği süslü bir dil olabilir, ancak günün sonunda, bir kodlayıcı, geliştirici, programcı, mimar söz konusu olduğunda, bir sınıf örneği ve nesne aynı anlama gelir ve genellikle birbirinin yerine kullanılabilir . Kariyerimde seçici olacak ve yarım saatini farklılıklara işaret etmeye çalışan biriyle hiç tanışmadım çünkü gerçekten hiçbiri yok. Diğer geliştirme çabalarına zaman daha iyi harcanabilir.
GÜNCELLEME Swift ile ilgili olarak, Swift'i icat eden Apple bunu tercih ediyor:
Bir sınıfın bir örneği geleneksel olarak bir nesne olarak bilinir. Bununla birlikte, Swift sınıfları ve yapıları, işlevsellik açısından diğer dillere göre çok daha yakındır ve bu bölümün çoğu, bir sınıf veya bir yapı türünün örneklerine uygulanabilecek işlevleri açıklar. Bu nedenle, daha genel bir terim olan örnek kullanılır.
Harika soru.
Mümkün olan en basit şekilde açıklayacağım: Sepetinizde 5 elma olduğunu söyleyin. Bu elmaların her biri, bazı özellikleri olan (yani büyük, yuvarlak, ağaçlarda yetişen) Apple türünde bir nesnedir.
Programlama açısından, değişken boyuta sahip Apple adında bir sınıfa sahip olabilirsiniz: büyük, şekil: yuvarlak, habitat: ağaçlarda büyür. Sepetinizde 5 elma olması için, 5 elma denemeniz gerekir .Apple apple1, Apple apple2, Apple apple3 etc...
.
Alternatif olarak: Nesneler bir şeyin tanımı, örnekler fiziksel şeylerdir.
Bu mantıklı mı?
Örnek: örnek, yalnızca bir referans oluşturmak (kopya) anlamına gelir.
nesne: bellek konumunun yeni operatör kullanılarak nesneyle ilişkilendirildiği (sınıfın bir çalışma zamanı varlığı olduğu) anlamına gelir.
Basit bir deyişle, Örnek, nesnenin belirli bir zamandaki kopyasını ifade ederken, nesne, sınıfın bellek adresini ifade eder.
Diyelim ki birkaç sandalye inşa ediyorsun.
Bir sandalyenin nasıl yapılacağını ve bir araya getirileceğini gösteren şema, bir yazılım sınıfına karşılık gelir.
Diyelim ki diyagramdaki desene göre beş sandalye inşa ettiniz. Aynı şekilde, bir sınıftaki desene göre beş yazılım nesnesi oluşturabilirsiniz.
Her sandalyenin, her bir sandalyeyi tanımlamak için koltuğun altına yazılmış benzersiz bir numarası vardır. 3. sandalye, sandalye modelinin bir örneğidir. Benzer şekilde, bellek konumu 3, bir yazılım modelinin bir örneğini içerebilir.
Dolayısıyla, bir örnek (3. sandalye), bir sandalye modelinin tek bir benzersiz, spesifik tezahürüdür.
Nesne :
Genel bir terimdir, temelde durumu (değişkenleri) ve davranışı (yöntemleri) olan bir Yazılım paketidir.
Sınıf :
Bir nesne örneği için mavi bir baskı (şablon) - bu benzersiz bir nesnedir, örneğin bir nesneyi iki kez yaratırsanız bu, iki örnek oluşturduğunuz anlamına gelir
Bir örnek vereyim
Class student()
{
private string firstName;
public student(string fname)
{
firstName=fname;
}
Public string GetFirstName()
{
return firstName;
}
}
Nesne örneği :
Öğrenci s1 = yeni öğrenci ("Martin"); Öğrenci s2 = yeni öğrenci ("Kumar");
S1, s2 Öğrenci sınıfının nesnesine sahip
Örnek :
s1 ve s2 nesne öğrenci örnekleridir, ikisi benzersizdir .
referans olarak da adlandırılabilir .
temelde s1 ve s2 bir nesneye atanmış değişkenlerdir
Nesneler ve örnekler çoğunlukla aynıdır; ama çok küçük bir fark var. Eğer Car
bir sınıftır, 3 Car
s, 3 farklı nesnelerdir. Bu nesnelerin tümü örnektir. Yani bu 3 araba,Car
sınıfın .
Ancak "örnek" kelimesi "yapı örneği" anlamına da gelebilir. Ancak nesne yalnızca sınıflar içindir.
Tüm nesneler örneklerdir. Örneklerin tümü nesne olmamalıdır. Örnekler, "yapı örnekleri" veya "nesneler" olabilir. Umarım bu farkı sizin için netleştirir.
Bir nesne, özellikler ve yöntemler gibi belirli özelliklere ve özelliklere sahip olan statik bir yapıdır, herhangi bir şey olabilir (bir dizge, bir kullanıcı denetimi, vb.)
Örnek, bu nesnenin kullanabileceğiniz ve bir şeyler yapabileceğiniz benzersiz bir kopyasıdır.
Bilgisayar gibi bir ürün hayal edin.
THE xw6400 iş istasyonu bir nesnedir
SİZİN xw6400 iş istasyonunuz (veya EŞİNİZİN xw6400 iş istasyonu) xw6400 iş istasyonu nesnesinin bir örneğidir
Bu cevap basmakalıp görünebilir, ancak bir örnek ile nesne arasındaki farklar hakkında endişelenmek zaten basmakalıp bir şehirdir.
Bence en iyi javascript'te tasvir edildi:
let obj= {"poo":1}
// "obj" is an object
ayetler
Class Trash {
constructor(){this.poo = 1;}
}
let i = new Trash();
// "i" is an instance
Object ve Instance nesnesinin Tanımı'nı görürsek -
Çalışma zamanında sınıfın üyesi için ayrılan belleğe nesne denir veya nesne, Class örneğidir.
Örnek tanımını görelim -
Çalışma zamanında Herhangi biri için ayrılan bellek , örnek değişken olarak adlandırılır.
Şimdi , Malloc, Calloc, Realloc gibi C de gerçekleşen herhangi bir çalışma zamanı bellek tahsisinin anlamını anlayın :
struct p
{
}
p *t1
t1=(p) malloc(sizeof(p))
Yani burada da çalışma zamanı bellek tahsisini ayırıyoruz, ancak burada örnek olarak çağırıyoruz, böylece t1 burada nesne olarak t1 diyemeyiz, bu nedenle Her nesne Sınıfın örneğidir ancak her Örnek Nesne değildir.
Nesne - Kendi durumuna ve kendi sınıfı tarafından tanımlanan tüm davranışlara erişime sahip bir sınıf örneği.
Örnek - Belirli bir sınıf için bir bellek alanına referans.
Bunu açıklamak için kodu kullanmayan bir adam dışında inanamıyorum, ben de bir şans vereyim!
// Design Class
class HumanClass {
var name:String
init(name:String) {
self.name = name
}
}
var humanClassObject1 = HumanClass(name: "Rehan")
Şimdi sol taraf, yani: "humanClassObject1" nesnedir ve sağ taraf, yani: HumanClass (isim: "Rehan") bu nesnenin örneğidir.
var humanClassObject2 = HumanClass(name: "Ahmad") // again object on left and it's instance on the right.
Dolayısıyla, temel olarak, örnek o nesne için belirli değerleri içerir ve nesneler bellek konumunu (çalışma zamanında) içerir.
"Nesne başvurusu bir nesnenin bir örneğine ayarlanmadı" ünlü ifadesini hatırlayın, bu, başlatılmamış nesnelerin herhangi bir örneğinin olmadığı anlamına gelir. Swift gibi bazı programlama dillerinde, derleyici, tüm üyelerini başlatmanın hiçbir yolu olmayan bir sınıf tasarlamanıza bile izin vermez (değişken, örneğin: isim, yaş vb.), Ancak bazı dillerde bunu yapmanıza izin verilir:
// Design Class
class HumanClass {
var name:String // See we don't have any way to initialise name property.
}
Ve hata, yalnızca şuna benzer bir şey yapmaya çalıştığınızda çalışma zamanında gösterilecektir:
var myClass = HumanClass()
print(myClass.name) // will give, object reference not set to an instance of the object.
Bu hata, yukarıda bunu açıklamaya çalıştığım gibi belirli değerlerin (değişkenler \ özellik için) "INSTANCE" olduğunu gösterir! Ve "myClass" nesnesi bellek konumunu (çalışma zamanında) içerir.
Bir değişken özel bir türden (sınıf) bildirildiğinde, yalnızca nesne adı verilen bir başvuru oluşturulur. Bu aşamada, bu nesneye bellek ayrılmamaktadır . Sadece bir işaretçi görevi görür (nesnenin gelecekte depolanacağı konuma). Bu sürece 'Beyanname' denir.
Employee e; // e is an object
Öte yandan, new
operatör kullanılarak özel türde bir değişken bildirildiğinde , bu nesneye yığın içinde bellek ayırır ve başvuruyu ayrılmış belleğe döndürür. Şimdi örnek olarak adlandırılan bu nesne . Bu sürece "Örnekleme" denir.
Employee e = new Employee(); // e is an instance
Öte yandan, Java gibi bazı dillerde bir nesne, Oracle'ın Java belgelerinde yazılan satırdan da anlaşılacağı gibi bir örneğe eşdeğerdir :
Not: "Bir sınıfın somutlaştırılması" ifadesi, "bir nesne oluşturmak" ile aynı anlama gelir. Bir nesne oluşturduğunuzda, bir sınıfın "örneğini" oluşturursunuz, dolayısıyla bir sınıfı "başlatırsınız".
her nesnenin kendi sınıfının bir örneği olduğu söylenir, ancak sınıfın her örneği, her öznitelik için kendi değerine sahiptir, öznitelik adını ve işlemi, sınıfın öznitelikleriyle paylaşır, ancak bir nesne, sınıfının özniteliğine örtük bir referans içerir
Sınıf: Bir sınıf mavi bir baskıdır. Nesne: Sınıfın kopyasıdır. Örnek: Nesnenin bellek adresini tutmak için kullanılan değişkendir.
Çok temel bir analitik örnek
Sınıf Evi -> Evin planı. Ama mavi baskıda yaşayamazsınız. Yaşayacağınız sınıfın örneği olan fiziksel bir Eve ihtiyacınız var. Yani nesnenin gerçek adresi örnektir. Örnekler nesneleri temsil eder.
Bir sınıfın örneğini oluşturduğunuzda (yeniyi kullanarak), bu örneklenmiş şey bir nesne haline gelir. Bir nesne, kapsülleme, polimorfizm, nesne yönelimli programlamanın soyutlama ilkelerine ve sınıfta tanımlanan örnek üyelerini tüketmek için bir programın etkileşime girdiği gerçek şeye bağlı olabilen bir şeydir. Nesne, örnek üyeler (statik olmayan üyeler) içerir.
Dolayısıyla, bir sınıfın örneği bir nesnedir. 'Örnek' kelimesi, doğduğu yerin kökenine atıfta bulunurken kullanılır, 'bir sınıfın nesnesi' ile karşılaştırıldığında 'bir sınıfın örneği' derseniz daha nettir (ancak ikincisi kullanılabilir).
Bu java belgesinin yuvalanmış sınıflarla ilgili 'İç sınıflar' bölümünü de okuyabilir - https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
Java, nesne yönelimli bir programlama dilidir (OOP). Bu, Java'da ilkel türler dışındaki her şeyin bir nesne olduğu anlamına gelir.
Şimdi, Java nesneleri gerçek dünyadaki nesnelere benzer. Örneğin Java'da mevcut hız ve renk gibi özelliklere sahip bir araba nesnesi oluşturabiliriz; ve şunun gibi davranışlar: hızlandırın ve park edin.
Bu Object .
Örnek , diğer tarafta, benzer görünen nesnenin benzersiz şekilde başlatılmış bir kopyasıdır Car car = new Car()
.
Java sınıfları ve nesnesi hakkında daha fazla bilgi edinmek için göz atın
Hızlı ve Basit Cevap
An object
ve an arasındaki farkla ilgili olarak instance
, herhangi bir fikir birliği olduğunu düşünmüyorum.
Bana öyle geliyor ki, insanlar bunu kağıtlarda, blog yazılarında, kitaplarda veya sohbetlerde hemen hemen birbirinin yerine değiştiriyor.
Bana gelince, benim gördüğüm şekliyle, bir nesne, kullanıldığı dile göre belirlenen, bellekte genel ve canlı bir varlıktır. Tıpkı içindeki Object
sınıf gibi Java
. Bir konteyner tarafından yönetilip yönetilmesin, türüne veya onunla ilişkili başka herhangi bir şeye pek aldırmıyoruz.
An instance
, bir object
türdür ancak this method accepts Foo instances
, veya gibi bir türle ilişkilidir you can not put Animal instances in an instance of
a List of Vehicles
.
object
s örneğin locks
onlarla ilişkilidir, instance
s değil , instance
s'nin yöntemleri vardır. objects
çöp toplanır, instance
s değil .
Ama dediğim gibi, ben bunu sadece böyle görüyorum ve aralarında standart bir tanım için başvurabileceğimiz herhangi bir organizasyon olduğunu sanmıyorum ve herkesin biraz farklı anlayışları / tanımları olacaktır (elbette sınırlar dahilinde) .
Bir nesne genel bir şeydir, örneğin matematikte doğrusal bir işlev al
ax + b bir nesnedir, 3x + 2 ise bu nesnenin bir örneğidir
Nesne <<< Örnek
Genel <<< Özel
Bundan daha fazlası yok
Bir nesne bir sınıf olabilir, mesela basketbol adında bir sınıfınız var.
ancak birden fazla basket topuna sahip olmak istiyorsanız, kodunuzda 1'den fazla basketbol
basketball1 ve basketball2 deyin. Ardından uygulamanızı çalıştırırsınız. Artık basketbol nesnesinin 2 örneğine sahipsiniz.
Nesne, sınıfa, örnek ise bir nesneye atıfta bulunur. Başka bir deyişle, örnek, içinde belirli değerlere sahip bir nesnenin kopyasıdır.