Otomatik Uygulanan Özellikler
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 10 / 70.
Otomatik uygulanan özellikler (Auto-implemented properties), açıkça destekleyici alanlar (backing fields) yazmadan özellikler tanımlamanıza olanak tanır. Derleyici, arka planda otomatik olarak gizli bir özel alan oluşturur.
Bu ayrıntılı kodu yazmak yerine:
public class Product
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}Basitçe şöyle yazabilirsiniz:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}Varsayılan değerleri doğrudan bildirim içinde de ayarlayabilirsiniz:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}Otomatik uygulanan özellikler (auto-implemented properties), getter veya setter içerisinde doğrulamaya veya özel bir mantığa ihtiyaç duymadığınız durumlarda idealdir. Sınıflarınızı temiz tutarlar ve boilerplate kod miktarını önemli ölçüde azaltırlar.
Görev
KolayBir mağazadaki ürünleri takip etmek için otomatik uygulanan özellikleri (auto-implemented properties) kullanarak basit bir envanter sistemi oluşturalım.
Kodunuzu düzenlemek için iki dosya oluşturacaksınız:
Item.cs:Inventoryad alanı (namespace) içindeName(string),Price(decimal) veInStock(bool) için otomatik uygulanan özelliklere sahip birItemsınıfı tanımlayın. Varsayılan değerleri ayarlayın:Namevarsayılan olarak"Unknown",Price0.0mveInStocktrueolmalıdır.Program.cs: Ana dosyanızda, nesne başlatıcılarını (object initializers) kullanarak ikiItemnesnesi oluşturun. Her bir ürün için isim ve fiyatı girdiden okuyun, ardından her ürünün detaylarını yazdırın.
Dört girdi alacaksınız:
- İlk ürünün adı
- İlk ürünün fiyatı
- İkinci ürünün adı
- İkinci ürünün fiyatı
Her ürünü şu formatta yazdırın:
Item: {Name}, Price: {Price}, In Stock: {InStock}Örneğin, girdiler Laptop, 999.99, Mouse ve 25.50 ise, çıktı şöyle olmalıdır:
Item: Laptop, Price: 999.99, In Stock: True
Item: Mouse, Price: 25.50, In Stock: TrueKopya kağıdı
Otomatik uygulanan özellikler (Auto-implemented properties), açıkça yedek alanlar (backing fields) yazmadan özellikler tanımlamanıza olanak tanır. Derleyici otomatik olarak gizli bir özel alan oluşturur.
Temel sözdizimi:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}Varsayılan değerleri ayarlama:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}Otomatik uygulanan özellikler, getter veya setter içinde doğrulamaya veya özel bir mantığa ihtiyaç duymadığınızda idealdir.
Kendin dene
using System;
using Inventory;
class Program
{
public static void Main(string[] args)
{
// İlk öğe için girişleri oku
string name1 = Console.ReadLine();
decimal price1 = Convert.ToDecimal(Console.ReadLine());
// İkinci öğe için girişleri oku
string name2 = Console.ReadLine();
decimal price2 = Convert.ToDecimal(Console.ReadLine());
// TODO: Nesne başlatıcılarını (object initializers) kullanarak iki Item nesnesi oluşturun
// Giriş değerlerinden Name ve Price özelliklerini ayarlayın
// TODO: Her bir öğenin ayrıntılarını şu formatta yazdırın:
// Item: {Name}, Price: {Price}, In Stock: {InStock}
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci Kayıtları