Kod Yazmak
Kod Yazmak
Birkaç ay önce, bazı kodlar yazarken, bir sınıftaki alanlardan birinin (Dosyaadı) diğerinden (Ad) türetilebileceği bir durumla karşılaştık.
Bu nedenle C++’da özellik deyimini (veya tasarım modelini) kullanmaya karar verdik ve diğer alandan türetilen alan için bir getFilename() işlevi yazdık. Daha sonra tüm kodu gözden geçirmemiz ve alana yapılan referansı getFilename() çağrılarıyla değiştirmemiz gerekiyordu. Proje oldukça büyük olduğu için bu biraz zaman aldı.
Ayrıca, dosya adını almak istediğimizde, yalnızca sınıfın Dosyaadı üyesine başvurmak yerine getFilename() üye işlevini çağırmamız gerektiğini hatırlamamız gerekiyordu.
Bu, modeli kavramayı biraz zorlaştırdı; Dosyaadı sadece bir alan olmak yerine, ona erişmemiz gerektiğinde gerçekten bir işlevi çağırdığımızı hatırlamamız gerekiyordu. Benzer şekilde, dosya adının değerini ayarlamak için bir setFilename() işlevini çağırmamız gerekiyordu.
GetFilename() ve setFilename() öğelerinin mantıksal olarak tek bir “sanal alan” ile ilişkili olduğu, bir sınıfa bakıldığında, özellikle sınıf üyeleri genellikle olduğu gibi alfabetik olarak listelendiğinde açık değildir. Özellik modeli, bir sınıfın yazarı için iyidir, ancak sınıfın kullanıcısı için biraz kullanışsızdır.
C#, özellikleri dilin birinci sınıf vatandaşları olarak ekler. Özellikler, bir sınıfın kullanıcısına alanlar gibi görünür, ancak geçerli değeri almak ve yeni bir değer ayarlamak için bir kod bloğu (erişimci olarak bilinir) kullanırlar. Kullanıcı modelini (alan) uygulama modelinden (üye işlev) ayırabilirsiniz; bu, bir sınıf ile bir sınıfın kullanıcıları arasındaki bağlantı miktarını azaltarak tasarım ve bakımda daha fazla esneklik sağlar.
.NET çalışma zamanında özellikler, bir adlandırma modeli ve üye işlevleri özellik adına bağlayan biraz fazladan meta veri kullanılarak uygulanır. Bu, özelliklerin bazı dillerde özellikler olarak ve diğer dillerde yalnızca üye işlevler olarak görünmesine izin verir. Özellikler, .NET Framework genelinde yoğun bir şekilde kullanılır; aslında, birkaç (eğer varsa) ortak alan vardır.
Bir özellik, bir özellik bildiriminden ve özelliğin alınmasını veya ayarlanmasını işleyen erişimciler olarak bilinen bir veya iki kod bloğundan oluşur.
Bu sınıf, Name adında bir özellik bildirir ve bu özellik için hem alıcı hem de ayarlayıcı tanımlar. Alıcı, yalnızca özel değişkenin değerini döndürür ve ayarlayıcı, değer adlı özel bir parametre aracılığıyla dahili değişkeni günceller. Ayarlayıcı her çağrıldığında, değişken değeri, özelliğin ayarlanması gereken değeri içerir. Değerin türü, özelliğin türüyle aynıdır.
Özellikler bir alıcıya, ayarlayıcıya veya her ikisine birden sahip olabilir. Yalnızca bir alıcıya sahip bir özelliğe salt okunur özellik denir ve yalnızca bir ayarlayıcıya sahip bir özelliğe salt yazılır özellik denir.
Üye işlevler gibi, özellikler de sanal, geçersiz kılma veya soyut değiştiriciler kullanılarak bildirilebilir. Bu değiştiriciler özelliğe yerleştirilir ve her iki erişimciyi de etkiler.
Türetilmiş bir sınıf, temel sınıfla aynı ada sahip bir özellik bildirdiğinde, tüm özelliği gizler; sadece bir alıcı veya ayarlayıcıyı gizlemek mümkün değildir.
Özellikler, bir sınıfın arayüzünü bir sınıfın uygulamasından ayırır. Bu, özellik diğer alanlardan türetildiğinde ve tembel başlatma yapmak ve yalnızca kullanıcının gerçekten ihtiyacı varsa bir değer getirmek istediğinizde kullanışlıdır.
Bir araba üreticisinin, araba üretimi hakkında bazı güncel bilgileri listeleyen bir rapor hazırlamak istediğini varsayalım. Özellikler, ayarlayıcı çağrıldığında yalnızca bir değer ayarlamanın ötesinde bir şey yapmak için de kullanışlıdır. Örneğin, kullanıcı bir ürün sayısını değiştirdiğinde bir alışveriş sepeti toplamı güncelleyebilir.
Bu örnekte, Basket sınıfı bir BasketItem dizisi içerir. Bir öğenin fiyatı veya miktarı güncellendiğinde, Sepet sınıfına bir güncelleme gönderilir ve sepet, sepetin toplamını güncellemek için tüm öğeleri gözden geçirir.
Basit kod yazma
Kod yazma sitesi
Kod yazma programları
Kod Nasıl Yazılır
Bilgisayarda kod yazma yeri nasıl açılır
Yeni başlayanlar için kod yazma
Kod yazma öğrenme
Online kod yazma
Statik Özellikler
C#, üye özelliklerine ek olarak, sınıfın belirli bir örneğine değil, tüm sınıfa ait olan statik özelliklerin tanımlanmasına da izin verir. Statik üye işlevler gibi, statik özellikler de sanal, soyut veya geçersiz kılma değiştiricileriyle bildirilemez. Salt okunur alanları tartıştığımızda, bazı statik salt okunur alanları başlatan bir durum gösterdik.
Aynı şeyi, gerekli olana kadar alanları başlatmak zorunda kalmadan statik özelliklerle de yapabilirsiniz. Değer, gerektiğinde üretilebilir ve saklanamaz. Alanı oluşturmak maliyetliyse ve muhtemelen tekrar kullanılacaksa, değer özel bir alanda önbelleğe alınmalıdır. Oluşturulması ucuzsa veya tekrar kullanılması olası değilse, gerektiği gibi oluşturulabilir.
Bu, verimsiz bir tasarım gibi görünebilir, çünkü normalde bir alan erişimi göreceğiniz yere bir üye işlev çağrısı eklenir. Bununla birlikte, temeldeki çalışma zamanı ortamının diğer basit işlevlerde olduğu gibi erişimcileri satır içine almaması için hiçbir neden yoktur, bu nedenle basit bir alan yerine bir özellik seçerken genellikle performans kaybı olmaz.
Arayüzü değiştirmeden uygulamayı daha sonra gözden geçirebilme fırsatı paha biçilmez olabilir, bu nedenle özellikler genellikle genel üyeler için alanlardan daha iyi bir seçimdir.
Özellikleri kullanırken küçük bir dezavantaj kalır; tüm .NET dilleri tarafından yerel olarak desteklenmezler, bu nedenle diğer dillerin erişimci işlevlerini doğrudan çağırması gerekebilir, bu da alanları kullanmaktan biraz daha karmaşıktır.
Mülk Erişilebilirliği
C# dilinin ilk tasarımı sırasında, dil tasarımcıları get ve set erişimcileri için farklı erişilebilirlik seviyelerine izin vermenin gereksiz bir karmaşıklık olduğunu düşündüler. Önemli miktarda müşteri geri bildiriminden sonra, tasarımcılar bu kararı C# 2.0 için geri almaya karar verdiler.
Tek tip bir erişilebilirlik düzeyiyle ilgili sorun, birçok durumda bir genel erişimcinin ve dahili, korumalı veya özel bir set erişimcisinin gerekli olmasıydı. C# 1.0 bunu desteklemedi, bu da buna benzer bir kodla sonuçlandı.
Bu örnekte, yalnızca farklı bir erişilebilirlik düzeyinin tanımlanmasına izin vermek için özellik bildiriminin dışında bir sözde ayarlayıcı bildirilir. Bu çirkin geçici çözümün, farklı erişilebilirliğin neden olabileceği ek karmaşıklıktan daha kötü olduğuna karar verildi ve özellik sözdizimi, bir erişimcinin erişilebilirlik düzeylerinin “geçersiz kılınmasına” izin verecek şekilde genişletildi.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)