Nesne
- İngilizcesi
- Object
- Türkçe karşılığı
- obje
- Okunuşu
- abcekt
Kısaca
Nesne, ilgili veriyi ve davranışı bir arada tutan yapıdır: değerleri özellik denen adlandırılmış alanlarda, onları işleyen fonksiyonları metot olarak taşır.
Programlamada nesne (object) nedir?
Nesneler, programın şeyleri insanların düşündüğü şekilde modellemesini sağlar. Bir kullanıcı nesnesi bir ad, bir e-posta adresi ve bir kayıt tarihi tutabilir; rename() ya da isActive() gibi metotlar sunabilir. Kod ortalıkta dağınık değişkenler taşımak yerine, verisini ve o veri üzerindeki işlemleri bir arada tutan tek bir nesneyi dolaştırır.
Java, C#, Python ve C++ gibi sınıf tabanlı dillerde nesne, bir sınıfın örneğidir (instance): sınıf şablondur, ondan üretilen her nesnenin alanların kendine ait bir kopyası vardır. new User("Ada") ile new User("Linus"), aynı sınıftan, farklı verilere sahip iki nesnedir. JavaScript'te nesneler doğrudan değişmez olarak da yazılabilir, { name: "Ada" }, ve prototipler üzerinden kalıtım alır.
Değişkenler genellikle nesnenin kendisini değil, ona bir referansı tutar. Bir nesneyi ikinci bir değişkene atamak onu kopyalamaz: iki ad da aynı nesneyi gösterir, bu yüzden birinden yapılan değişiklik diğerinden de görünür. Birçok dilde iki nesneyi == ya da === ile karşılaştırmak, içeriklerinin aynı olup olmadığını değil, aynı nesne olup olmadıklarını kontrol eder.
Sık yapılan bir yanlış, nesnelerin yalnızca nesne yönelimli programlamaya ait olduğunu düşünmektir. Fonksiyonel ve prosedürel kod da veriyi gruplamak için nesneler ya da kayıtlar kullanır; kodu nesne yönelimli yapan, iç durumunu gizleyen ve davranışını metotlarla sunan nesneler etrafında düzenlenmesidir.
Önemli noktalar
- Nesne, ilgili veriyi (özellikler) ve davranışı (metotlar) bir arada tutar.
- Sınıf tabanlı dillerde nesne bir sınıfın örneğidir.
- JavaScript'te nesne değişmezleri ve prototip tabanlı kalıtım da vardır.
- Değişkenler referans tutar; bu yüzden iki ad aynı nesneyi gösterebilir.
- Nesne yönelimli kod, durumunu gizleyen nesneler etrafında düzenlenir.
Örnek
class User {
constructor(name) {
this.name = name; // a property
this.createdAt = new Date();
}
greet() { // a method
return `Hi, I'm ${this.name}`;
}
}
const ada = new User("Ada"); // an instance of User
console.log(ada.greet());
const point = { x: 2, y: 3 }; // an object literal
const same = point; // a second reference, not a copy
same.x = 10;
console.log(point.x); // 10Sık sorulan sorular
Sınıf ile nesne arasındaki fark nedir?
Sınıf tanımdır: nesnelerinin hangi alanları ve metotları olacağını söyler. Nesne ise ondan üretilmiş, kendi değerlerine sahip somut bir örnektir. Bir sınıftan istenildiği kadar nesne üretilebilir.
Özellik (property) ve metot nedir?
Alan ya da nitelik olarak da adlandırılan özellikler, bir nesnenin tuttuğu değerlerdir. Metotlar ise nesneye ait olan ve genellikle bu değerleri okuyan ya da değiştiren fonksiyonlardır.
Bir nesneyi nasıl kopyalarım?
Atama yalnızca referansı kopyalar. Yeni bir nesne elde etmek için açıkça kopyalamanız gerekir: sığ kopya (shallow copy) üst düzey alanları çoğaltır, JavaScript'teki { ...obj } gibi; derin kopya (deep copy), örneğin structuredClone(obj), iç içe nesneleri de kopyalar.
Sık karşılaştırılanlar
İlgili sayfalar
- SınıfProgramlamanın Temelleri, s. 49Sınıf, nesne yönelimli programlamada bir grup nesnenin paylaştığı veri ve davranışı tanımlayan, nesnelerin örnek olarak ondan oluşturulduğu bir plandır.
- OOPProgramlamanın Temelleri, s. 41OOP, yani nesne yönelimli programlama, kodu ilişkili verileri onlar üzerinde işlem yapan fonksiyonlarla birleştiren nesneler etrafında düzenleme yöntemidir.
- MetotProgramlamanın Temelleri, s. 38Metot, bir nesneye ya da sınıfa ait olup onun üzerinden çağrılan fonksiyondur; user.rename("Ada") örneğindeki gibi nesnenin verisini okuyup değiştirebilir.
- KapsüllemeProgramlamanın Temelleri, s. 33Kapsülleme, verileri onları kullanan metotlarla paketleyip iç ayrıntıları gizlemektir; dışarıdaki kod yalnızca herkese açık bir arayüz üzerinden çalışır.
- KalıtımProgramlamanın Temelleri, s. 31Kalıtım, yeni bir sınıfın mevcut bir sınıfın alanlarını ve metotlarını yeniden kullanmasını, genişletmesini ve geçersiz kılmasını sağlayan OOP özelliğidir.
- DeğişkenProgramlamanın Temelleri, s. 10Değişken, bir programda sayı ya da metin gibi bir değeri tutan ve kodun çalışırken okuyup değiştirebildiği, adlandırılmış bir depolama alanıdır.
- ConstructorProgramlamanın Temelleri, s. 7Constructor, bir sınıftan yeni bir nesne oluşturulduğunda çalışan ve nesnenin başlangıç değerlerini ayarlayarak onu kullanıma hazırlayan özel bir metottur.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin