C# Kapsam Uygulama

Kapsam Uygulama

Program içerisinde değişkenlerin nasıl tanımlandığı görüldü. Değişkenler tanımladıkları yerde oluşturulur ve daha sonra istenilen şekilde kullanılabilir yani tanımlandıkları yer program gövdesi ya da herhangi bir metodun içerisi olabilir. Program ya da metot sonlandığında ise değişken artık kullanılamaz. Bir değişken belirli bir yerde kullanılabiliyorsa değişken o konumda kapsam (scope) içerisindedir. Farklı bir biçimde ifade etmek gerekirse bir değişkenin kapsamı, değişkenin o program içerisinde kullanıldığı bölgedir. Bu kural değişkenler için olduğu gibi tanımlanan metotlar için de geçerlidir.

Yerel Kapsamı Tanımlama

Bir metodun gövdesini oluşturan, açılan ve kapatılan küme parantezleri, kapsamı tanımlar. Metodun gövdesi içinde tanımlanan bütün değişkenler, o metodun kapsamına eklenir. Metot sona erdiğinde geçerliliklerini yitirir ve sadece tanımlandıkları metot üzerinden erişilebilir. Bu tür değişkenler sadece tanımlandıkları metot içerisinde kullanılabildiğinden yerel(local) değişkenler olarak adlandırılır.

Örnek :

[csharp]void bolme()
{
int a = Convert.ToInt16 ( TextBox1.Text ) ;
int b = Convert.ToInt16 ( TextBox2.Text ) ;
TextBox3.Text = Convert.ToString ( a / b ) ;
}

void carpma()
{
int a = Convert.ToInt16 ( TextBox1.Text ) ;
int b = Convert.ToInt16 ( TextBox2.Text ) ;
TextBox3.Text = Convert.ToString ( a * b ) ;
}[/csharp]

Yukarıdaki örnekte bolme adlı metot içerisinde ise int türünde a ve b değişkenleri tanımlıdır. Aynı değişkenler carpma adlı metot içerisinde tanımlanmadan kullanılamaz. Çünkü değişkenler bolme metodu
kapsamında tanımlanmıştır. carpma metodunun içerisinde kullanılmaya çalışıldığında yazılan kodların derlenmesi başarısızlıkla sonuçlanır ve program hata verir. Hata ile karşılaşmamak için carpma metodunda değişkenler yeniden tanımlanmalıdır.

Sınıf Kapsamını Tanımlama

Bir sınıfın gövdesini oluşturmak için açılan ve kapatılan küme parantezleri de bir kapsam oluşturur. Sınıf gövdesi içinde tanımlanan değişkenler (metot içinde değil), o sınıfın kapsamındadır. Sınıf içerisinde tanımlanmış değişkenler field(alan) olarak adlandırılır. Yerel değişkenlerin aksine bu tür değişkenleri (alanları), metotlar arasında bilgi paylaşımı için kullanılabilir.

Örnek :

[csharp]Public partial class Window1 : Window
{
void bolme( )
{
int a = Convert.ToInt16 ( TextBox1.Text ) ;
int b = Convert.ToInt16 ( TextBox2.Text ) ;
TextBox3.Text = Convert.ToString ( a / b ) ;
}

void carpma( )
{
int a = Convert.ToInt16 ( TextBox1.Text ) ;
int b = Convert.ToInt16 ( TextBox2.Text ) ;
TextBox3.Text = Convert.ToString ( a * b ) ;
}
int a;
int b;
}
[/csharp]

Örnekte görüldüğü gibi a ve b değişkenleri herhangi bir metot içinde değil Window1 adlı sınıf içinde tanımlanmıştır. Dolayısıyla aynı değişkenler, bolme ve carpma adlı metotlar içerisinde tekrar tanımlanmaksızın kullanılabilmektedir. Sınıf içindeki diğer metotlar da a ve b değişkenlerini aynı şekilde kullanabilir. Çünkü bu değişkenler, sınıf kapsamındadır.

Diğer bir önemli nokta ise a ve b değişkenlerinin metotlardan sonra tanımlanmalarına rağmen metotlar içerisinde kullanılabilmeleridir. Bir metotta kullanmadan önce değişkeni tanımlamak gerekir. Sınıf kapsamındaki değişkenler (alanlar) biraz farklıdır. Bir metot, alanı tanımlayan ifadeden önce, o alanı kullanabilir. Bu noktada derleyici devreye girer ve bu durumu sizin için düzenler.

Metotları Aşırı Yükleme

Metotların belirli bir işi gerçekleştirebilen, isteğe bağlı değerler döndürebilen program parçacıkları olduğu biliniyor. Tanımlanan metotlar tek bir iş için tanımlansa da ilerleyen zamanlarda metoda yeni özellikler ekleyip işlevselliği artırılmak istenebilir. Metotların aynı adla yeniden tanımlanmaları iki şartla mümkündür. Eğer metodun aldığı parametre türü veya
sayısı değiştirilirse metodu aynı adla tekrar tekrar tanımlanabilir. Bu işleme metodun aşırı yüklenmesi (overload) adı verilir. Metot aşırı yüklenirken sadece geri dönüş türünü  değiştirmek işe yaramaz. Bu derleyici için kabul edilebilir bir durum değildir. Program hata verir.

Örnek :

[csharp]
namespace overload
{
class Program
{
static void Main(string[] args)
{
yaz(“Merhaba”,false);
}
static void yaz (string metin)
{
Console.WriteLine(metin);
}
static void yaz(string metin, bool tercih)
{
if (tercih)
{
Console.WriteLine(metin.ToUpper());
}
else
{
Console .WriteLine(metin.ToLower ());
}
}
}
} [/csharp]

Örnekte görüldüğü gibi yaz isimli iki metot tanımlanmıştır. Sonradan tanımlanan metot birincisinden farklı olarak bool türünde tercih adlı fazladan bir parametre daha almaktadır. Bu parametre program ana gövdesinden false olarak gönderilmiştir. Böylelikle ikinci metodun aşırı yüklenerek farklı bir işlevi yerine getirmesi sağlanmıştır.

Program gövdesinden gönderilen tercih değeri true olsaydı mesajın tamamı büyük harflerle yazılacaktı.

 

Kaynak: Megep Modülleri

Ahmet Şenlik

Kocaeli Üniversitesinde Bilgisayar Programcılığı okudum DGS ile 2016 yılında Sakarya Üniversitesi Bilgisayar mühendisliğini kazandım. Yazılımla uğraşmayı çok seviyorum bu alanda kendimi daha da geliştirmeyi düşünüyorum. Eğer siz de seviyorsanız bu işi devam edin başlamadıysanız başlayın başaracağınıza inanın. :)

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.