11.5 Ad Kaplamı
Nesne yönelimli programlamada (NYP) ortak özellikleri olan yada ortak bir bağlamda kullanılan bir grup sınıfı içine alan paketler ad kaplamı (namespace) olarak adlandırılmaktadır. Ad kaplamları sınıfların semantik ayrımlarını kategoriler halinde oluşturarak kaynak kodun daha iyi ve mantıklı organizasyonuna katkıda bulunur ve kullanımını kolaylaştırır. Şimdi C# ad kaplamlarını göz önüne alacağız ve bunların nasıl kullanılacağını göreceğiz.
11.5.1 C# Ad Kaplamları
C# ad kaplamları herhangi bir gereksinime bağlı olmadan da mantıksal olarak dosya sistemine yerleştirilmesi konusunda ilgili olarak adlandırılmış sınıf gruplarıdır. Ancak klasör adının ad alanı ile eşleşmesi gerektiği düşünülmektedir ve sınıf adı tanımlanmış bulunduğu dosya adı ile eşleşmelidir. Bazı programlama dillerinde dikkat etmek zorundayız ki, verilen bir ad kaplamında kaynak kodun derlenmesi ad kaplamının elemanlarını klasörlere dağıtmakla ve dosyaları disk üzerine dağıtmakla ilgilidir. Örneğin Java’da, dosya organizasyonunun açıklandığı gibi olması gerekiyor. (uymadığınız takdirde, derleme hatası oluşacaktır). C# bu konuda harfi harfine kurallar getirmez.
Şimdi, ad kaplamlarını tanımlamak için bir mekanizma düşünelim.
11.5.2 Ad Kaplamlarının Tanımlanması
Visual Studio'da yeni bir ad kaplamı veya belirli bir ad alanına ait yeni bir sınıf oluşturulması Çözüm Gezgini'nin bağlam (context) menüsündeki komutlar tarafından otomatik olarak gerçekleşir (ilgili klasör üzerinde sağ tıklayarak). Çözüm Gezgini, varsayılan olarak, entegre ortamın sağ kısmında görüntülenmiştir. Visual Studio içindeki Çözüm Gezgini’nin bağlam menüsü üzerinden halihazırdaki MyNamespace ad kaplamına nasıl yeni bir sınıfı ekleyeceğimizi göreceğiz:
Proje MyConsoleApplication olarak adlandırılmaktadır ve yeni oluşturulan sınıf, onun MyNamespace klasörü içine ad kaplamı olarak aşağıdaki kodla eklenecektir:
namespace MyConsoleApplication.MyNamespace
|
Bir sınıfı kendi dosyası içinde tanımlamışsak, ve yeni yada halihazırdaki bir ad kaplamı içine bu sınıfı eklemek istiyorsanız, bunu manuel olarak elle yapmak zor olmayacaktır. Adlandırılmasını istediğiniz sınıf blok kodunu namespace anahtar sözcüğü ile çevrelemeniz yeterli olacaktır:
Sınıf tanımının başında namespace anahtar sözcüğünü, bunu takiben ad kaplamının tam adını kullanıyoruz. C# ad kaplamlarının büyük harfle başlaması gerektiği ve Pascal biçimine uygun yazılacağı varsayılır. Örneğin, dize işleme ile ilgili sınıfları içeren bir ad kaplamı yazmanız istendiğinde, StringUtil tercih edilir, ancak string_utils tercih edilmemelidir.
11.5.3 İç İçe Ad Kaplamları
Ad kaplamları, sınıf hariç, başka diğer ad kaplamlarını içerebilir (iç içe ad kaplamları). Bu yolla, sezgisel olarak bir ad kaplamı hiyerarşisi oluşturulabilir. Böylece sınıfları semantiklerine göre daha detaylı dağıtabilirsiniz.
Ad kaplamlarını hiyerarşi içinde adlandırırken . (nokta) karakterini kullanıyoruz. Örneğin, .NET Çerçevesi içinden System ad kaplamı kendi içinde Collections alt-ad kaplamını içerir. Böylece iç içe geçmiş ad kaplamının tam adı System.Collections olarak yazılır.
11.5.4 Sınıfların Tam Adları
Ad kaplamının anlamını mutlak şekilde anlayabilmek için, şunu bilmek önemlidir:
|
Sınıf adlarının sadece tanımlanmış oldukları ad kaplamı içerisinde benzersiz olması gerekir.
|
Belirli bir ad kaplamı dışındaysanız ad alanındaki sınıfların adları ile eşleşsin veya eşleşmesin, rasgele ada sahip olan sınıflar oluşturabilirsiniz. Bunun nedeni, ad alanının içinde kalan sınıfların benzersiz bağlamda tanımlanmış olmalarıdır. Sözdizimsel olarak bu benzersizliğin nasıl tanımlandığını anlamamız gerekiyor.
Sınıfın tam adı sınıfın ilk adıdır ve öncesinde tanımlanmış bulunduğu ad kaplamının adı bulunur. Her sınıfın tam adı benzersizdir. Yine nokta işaretini kullanırız:
Şimdi, örneğin, System.Globalization ad kaplamında tanımlı CultureInfo sistem sınıfını ele alalım. (“Konsol Giriş ve Çıkış” Bölümü’nde bu sınıfı kullanmıştık.) Bu tanıma göre, sınıfın tam adı System.Globalization.CultureInfo olarak yazılır.
.NET çerçevesi içinde bazen eşleşen adları bulunan fakat farklı ad kaplamlarında tanımlı sınıflar bulunabilir, örneğin:
System.Windows.Forms.Control
System.Web.UI.Control
System.Windows.Controls.Control
|
11.5.5 Ad Kaplamı Eklenmesi
Nesne yönelimli bir uygulamayı oluştururken, çok sıklıkla birden fazla sayıda belirli bir ad kaplamına ait sınıflar kullanılır. Programcıya kolaylık sağlamak amacıyla kaynak kodun bulunduğu geçerli dosyanın içine bir ad kaplamı eklenir. Verilen bir ad kaplamını ekledikten sonra, içinde tanımlı tüm sınıfları, tam isimlerine gerek kalmaksızın kullanabilirsiniz.
Mevcut kaynak kod dosyasında ad kaplamını eklemek using anahtar sözcüğüyle aşağıdaki gibi çalıştırılır:
Ad kaplamı eklemenin önemli bir özelliğine dikkat çekeceğiz. Doğrudan ad kaplamında tanımlanan bütün sınıflar dahil ve kullanılabilirdir, ama şunu bilmek zorundayız:
|
Ad kaplamı eklenmesi özyinelemeli değildir, yani bir ad kaplamını eklerken iç içe ad kaplamlardan gelen sınıflar dahil edilmez.
|
Örneğin, System.Collections ad kaplamının eklenmesi iç içe ad kaplamı olan System.Collections.Generic sınıflarını otomatik olarak dahil etmez. Kullanılmak istendiğinde, ya tam adlarını uygulamak zorundayız, yada onları içeren ad kaplamını eklemek zorundayız.
Dostları ilə paylaş: |