BİLEŞENLER OLUŞTURMAK
Metotlar İle Kapsülleme
Alanları gizlemenin (kapsüllemenin) yollarından bir tanesi de metotları kullanmaktır. Bilgisayar ekranındaki bir noktayı x ve ye koordinatları ile gösteren bir yapı olsun. X koordinatı için geçerli aralığın 0 ile 1280 arasında olduğunu y koordinatları ise geçerli aralığın 0 ile 1024 arasında olduğunu varsayalım.
struct EkranPozisyonu{
Public EkranPozisyonu(int x, int y)
this.X=aralikDenetleX(x);
this.Y=aralikDenetleY(y);
}
public int X;
public int Y;
private static int aralikDenetleX(int x){
if(x<0 || x>1280)
{
throw new ArgumentOutOfRangeException(“X”);
}
return x;
}
private static int aralikDeneleY(int y){
if(y<0 || y>1024)
{
throw new ArgumentOutOfRangeException(“Y”);
}
return y;
}
}
Bu yapı ile ilgili veri tipi özel (private). Ortak (public) veri kullanımı sınırlılıkları olan bir uygulamadır. Çünkü kullanımı denetlemez. Örneğin Ekran Pozisyonu kurucu aralığı parametreleri denetler. Ancak böyle bir denetim ortak alanlara (X ve Y) uygulamaz.
Özellikleri Kullanma
Bir özelliği bir deyimde kullandığınızda onu ya bir okuma bağlamında (değerini değiştiremediğiniz durumlar) ya da bir yazma bağlamında (değerini değiştirdiğiniz durumlar) kullanırsınız.
Bir özelliği okuma bağlamında kullandığınızda derleyici alan benzeri kodunuz otomatik olarak o özelliğin get erişimcisine yapılan bir çağrıya dönüştürür. Benzer biçimde de bir özelliği yazma bağlamında kullanırsanız derleyici kodu otomatik olarak set erişimcisine yapılan bir çağrıya dönüştürür.
Sadece Okunabilir
Sadece get erişimcisi olan özellikleri bildirmesine izin verir. Bu durum özelliği yalnızca okuma bağlamında kullanabilirsiniz.
Örnek:
struct EkranPozisyonu2
{
…
public int X
{
get
{
return this.X;
}
}
}
X özelliği bir set erişimcisi içermez. Bu yüzden x değişkenine değer atayarak bir yazma bağlamında kullanmak için yapılan her girişim başarısız olur.
Sadece Yazılabilir
Benzer biçimde yalnızca set erişimcisi olan bir özellik bildirebilirsiniz. Bu durumda özelliği yalnızca yazma bağlamında kullanabilirsiniz.
Örnek:
struct EkranPozisyonu2
{
……..
public int X
{
set
{
this.X=aralikDenetlex(value);
}
}
}
Arayüz Özellikleri
Arayüzler yöntemlerin yanında özellikler de belirtebilir .Bunu yapmak için get veya set anathar
sözcüğü kullanılır. ;Ancak arayüzler uygulama kodları barındıramayacakları için get ve set erişimcilerinin
gövdeleri yerine noktalı virgül kullanılır.
Örnek:
interface IEkranPozisyonu
{
int X { get; set;}
int Y {get; set;}
}
Bu arayüzü kullanan tüm sınıf ve yapılar get ve set erişimci yöntemleri ile birlikte X ve Y özelliklerini de kullanmak zorundadır.
Otomatik Özellikler
Özelliklerin başlıca amacı alanların kullanımı uygulamasını dış dünyadan saklamaktadır. Özelliklerin amacına yönelik kullanımı önemlidir.
Veriyi ortak (public) alanlar olarak göstermek yerine özellikler tanımlamanız için en az iki neden vardır.
Uygulamalarla Uygunluk: Alanlar ve özellikler, derlemelerde farklı meta veri kullanarak kendilerini ortaya koyar. Bir sınıf geliştiriyorsanız ve ortak alanlar kullanmaya karar verdiyseniz bu sınıfı kullanan bir uygulama, alanlar olarak bu öğelere başvuracaktır. Bir özelliği okurken ve yazarken kullandığınız söz dizimini bir alanı okumak ve yazmak için kullanabilseniz de derlenen kod gerçekte çok farklıdır.
Arayüzlere Uygunluk: Bir arayüz gerçekleştiriyorsanız ve arayüz özellik olarak bir öğe tanımlıyorsa özellik sadece özel (private) alanlardaki veriyi okuyor ve yazıyor olsa bilr arayüzdeki şartlara uyan bir özellik yazmanız gerekir.
Özellikler İle Nesneleri Başlatma
Bir nesneyi başlatmak için kurucuları tanımlamayı öğrenmiş olmalısınız. Bir nesne birden çok kurucuya sahip olabilir ve bir nesnedeki farklı öğeleri başlatmak için çeşitli parametrelerle kurucular tanımlayabilirsiniz. Ancak bu pratik bir yaklaşım değildir.
Bir sınıfın kaç adet alan içerdiğine ve alanları başlatmak için istediğiniz çeşitli bileşimlere bağlı olarak çok sayıda kurucu yazmaya son verebilirsiniz. Bir sınıf oluşturulduğunda, set erişimlere sahip ortak (public) özellikler için değerler belirleyerek bu oluşumu başlatabilirsiniz.
Hiç yorum yok:
Yorum Gönder