11 Mart 2010 Perşembe

Object Oriented Programming (5) - OOP Kavramları - Namespace

Namespace :


.NET içerisindeki tüm Assembly'ler(kütüphaneler), .NET Framework ismi verilen ortak çatı altında toplanır. Bu çatı altındaki tüm Assembly'ler amaçlarına göre namespace denilen isim alanı altında gruplandırılır. Bu isim alanı(namespace) içerisinde Class ve Interface'ler bulunur.

Örneğin, .NET içerisinde veritabanı uygulamaları geliştirmek için System.Data.dll kütüphanesine ihtiyaç duyulur. Bu kütüphane Visual Studio .NET içerisindeki tüm proje şablonlarında otomatik olarak yer alır. System.Data.dll kütüphanesi içerisinde;

• System.Data
• System.Data.Common
• System.Data.SqlClient
• System.Data.OleDb
• System.Data.SqlTypes
• System.Xml

namespace'leri yer alır.

Yeni Namespace Eklemek:

Yeni bir namespace oluşturmak için namespace anahtar kelimesi kullanılır.

namespace NameSpace_adı
{
...
}

Aşağıdaki örnekte NSBilgeAdam isminde bir namespace tanımladım ve bu namespace içerisine Egitim ve Ogrenci isminde claslar ekledik.

namespace NSBilgeAdam
{

//BilgeAdam namespace kullanılacak.
//Class ve Interface tanımlanabilir.

class Egitim
{


//...


}


class Ogrenci
{


//…


}

// vs...


}

BilgeAdam namespace içindeki Ogrenci Class'ını kullanmak için, Class ismini namespace ile birlikte belirtmek gerekir.

bilgeadam.NSbilgeadam.Ogrenci yeniogrenci;
yeniogrenci = new bilgeadam.NSbilgeadam.Ogrenci() ;

Proje ile aynı isime sahip bir namespace .NET derleyicisi tarafından yeni oluşturulan tüm projelere varsayılan olarak eklenir. Bu genel namespace'e root namespace denir. Dolayısıyla kendi oluşturduğumuz namespace'leri kullanırken, namespace'imizin önüne root namespace'in adını eklemeniz gerekmektedir.

Herhangi bir namespace içerisinde birden fazla alt namespace tanımlanabilir. Örnekte NSBilgeAdam namespace içerisine Idari, Egitim ve Ogrenci adında üç ayrı namespace ekledim.

namespace NSBilgeAdam
{


//BilgeAdam namespace kullanılacak.


//Class ve Interface tanımlanabilir.


namespace Idari
{


class Personel
{


}


}


namespace Egitim
{


class Grup
{


}


}


namespace Ogrenci
{


class Bilgi
{


}


}


// vs...


}


Projeye Namespace Dâhil Etmek

Bir namespace içerisinde yer alan Classları kullanmak için, Class'ın bulunduğu Assembly'nin yolunu eksiksiz olarak belirtmek gerekir. Ancak bu şekilde kullanımlar, kodun okunmasını oldukça zorlaştırır. Örnekte Classlar bu yöntemle tanımladık.

bilgeadam.NSbilgeadam.Idari.Personel kisi1;
kisi1 = new bilgeadam.NSbilgeadam.Idari.Personel();


bilgeadam.NSbilgeadam.Ogrenci.Bilgi Ogrencibilgi;
ogrencibilgi = new bilgeadam.NSbilgeadam.Ogrenci.Bilgi();

Her Class için Assembly yolunun tekrarını ortadan kaldırmak için, using anahtar sözcüğü kullanılır. using sözcüğü ile eklenen namespace'lerin Class'larına, proje içerisinden doğrudan erişilebilir.

Örnekte NSBilgeAdam namespace'nin projeye dâhil edilmesi gösterilmektedir.

using bilgeadam.Nsbilgeadam;

NSBilgeAdam namespace'nde bulunan bir Class'ı kullanmak için sadece ismini yazmak yeterli olacaktır.

Ogrenci.Bilgi ogrenciBilgi = new ogrenci.Bilgi();

İç içe namespace'lerin kullanımında, içteki namespace kolayca erişmek için kısaltmalar kullanılabilir. Örnekte, NSBilgeAdam namespace içerisindeki Ogrenci namespace'ine erişim gösterilmektedir.

using ogr = bilgeadam.NSBilgeadam.Ogrenci;


Public Class Form1:System.Windows.Forms.Form
{


// ...


ogr.Bilgi OgrBilgi = new ogr.Bilgi();


}

Hiç yorum yok: