Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Sefer Algan
Sefer Algan
http://www.seferalgan.com
İletişme geçmek için tıklayın.
71 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C# / VC#/.NET Sefer Algan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 26.11.2002
Okunma Sayısı : 64948
Yorum Sayısı : 2     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 23.4.2024
Turhal Temizer
Mac OS/X Removing CUDA 23.4.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 23.4.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 23.4.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
C# İsim uzayları (namespace) Hakkında
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bu yazımızda C# dilindeki namespace ler hakkında geniş bir bilgi edineceğiz. Bildiğiniz gibi programlama dillerinde, programcıların işlerini kolaylaştırmak için bir takım hazır kütüphaneler mevcuttur, bu kütüphanelerden bazıları standart olmakla birlikte bazıları programcılar tarafından sonradan geliştirlmiş ve kullanıcların hizmetine sunulmuştur. Mesela MFC ve ATL gibi kütühanelerin kendilerine has amaçları vardır, MFC kütüphanesi ile bir takım hazır C++ sınıflarına ulaşarak temelde zor olan bir takım Windows platformuna özgü işlemleri (forms, dialog box vs.) yapabiliriz. Bu da MFC programcılarına çalışır bir uygulama yapmak için daha az zaman harcatır. Bu tür kütüphaneler Visul Basic te ve Java dilinde de vardır. Fakat bu dillerin aksine C# dili ile gelen hazır bir takım sınıf kütüphaneleri bulunmamaktadır, kısacası standart bir C# kütüphanesi mevcut değildir. Bu demek değildir C# ile işimiz daha zor olacak, aslında daha kolay, .NET Framework dediğimiz altyapının bize veya diğer programlama dillerini kullanan programcılara sunduğu bir takım temel türler ve sınıflar mevcuttur. Bütün bu sınıfları ve türleri binary düzeyde iyi oırganize edebilmek için .NET, namespace kavramını sıklıkla kullanmaktadır. Demekki .NET teki sınıf kütüphaneleri bir dilden bağımsız bir yapıdadır. MFC gibi sadece C++ için yada başka bir dil için geliştirilmemiştir. Çok normal olarak Visual Basic.NET kullanıcısı ile C# kullanıcısı aynı kütüphaneden faydalanırlar.

Namespace ler .NET Framework sınıf kütüphanesindeki veri türlerini ve sınıfları kullanabilmemiz için C# dilinde using anahtar sözcüğü ile birlikte kullanılır ve derleyiciye bildirilir. Diğer dillerde ise bu isimalanları farklı şekilde derleyiciye bildirilir, ama temelde yapılan iş .NET Framework sınıf kütüphaneslerini kullanma hakkı almaktır. Aşağıda C#, Visual Basic ve Managed C++ ile yazılmış 3 farklı ama aynı işi yapan 3 program görüyorsunuz. Programları dikkatlice incelediğinizde namespace lerin sadece eklenme biçimi ve namespace lerde ki sınıfların sentaks olarak kullanımı farklı. Bize sunudğu arayüzler ise özel durumlar dışında tamamen aynıdır.


[C#]

using System;

public class C#nedir
{
      public static void Main()
     {
          Console.WriteLine ("Merhaba, beni C# ile yazdılar.")
     }
}

[VB.NET]

Imports System

Public Module C#nedir

      sub Main()

               Console.WriteLine ("Merhaba, beni VB.NET ile yazdılar.")

     End Sub

[Managed C++]

using namespace System;

public static void Main()
{
     Console::WriteLine ("Merhaba, beni managed C++ ile yazdılar.")
}
Yukarıdaki programlarda gördüğünüz gibi .NET platformunu destekleyen bütün diller aynı sınıfı kullanarak ekrana yazı yazdırıyorlar.Bu sınıf System isimalanı içinde bulunan Console sınıfına ait bir fonksiyonla gerçekleştirilmektedir.

Namespace leri kendi yazdığımız kodların organizasyonu içinde kullanabiliriz. Hem böyle tür isimlerinin karışmasınıda önlemiş oluruz, zira bir tür ismi yada sınıf ancak kendi isimalanı içinde görünürlüğe(visibility) sahiptir. Mesela System isimalanını eklemeden Console sınıfını kullanamayız. Aynı şekilde kendi yazıdğımız sınıfları için de isimalanları tanımlayarak, kaynak kodumuzu istediğimiz bir şekilde organize edebiliriz. .NET Framework sınıf kütüphanesi hiyerarşik bir yapıya sahip olduğu için içeiçe isimalanları tanımlanmıştır.

İsimalanlarının kullanımına bir örnek verecek olursak : Diyelimki 2D (iki boyutlu) grafikleri içeren bir sınıf kütüphanesi geliştiriyoruz, ve bu sınıf kütüphanesi içinde "Nokta" adlı bir sınıfımız var. Bu isimalanını tanımlamak için namespace anahtar söcüğünün aşağıdaki gibi bir kullanımı vardır.


namespace 2DGraph
{
     public class Nokta
    {
      ......
    }
}
Yukarıdaki Nokta sınıfını kullanabilmek için programımıza using deyimi ile isimalanını eklememiz gerekir.Bu işlem aşağıdaki gibi yapılır.



using 2DGraph;
Nihayet 2DGraph isimli sınıf kütüphanesini oluşturduk ve başkalarının kullanımına sunduk. Bi süre sonra da 3DGraph isimalanı adı altında 3 boyutlu grafik işlemleri yapan yeni bir sınıf kütüphanesi geliştirdik ve te tekrar programcıların hizmetine sunduk. Yine aynı şekilde 3 boyutlu noktayı temsil etmek için Nokta sınıfımız olsun


namespace 3DGraph
{
     public class Nokta
    {
      ......
    }
}

Şimdi 2DGrap ve 3DGraph sınıf kütüphanelerinin herikisini birden kullanmak isteyen bir programcı using ile isimalnlarını ekledilten sonra Nokta türünden bir nesne oluşturmak istediğinde derleyici bunun 2D Nokta mı yoksa 3D Nokta mı olduğunu nerden bilecek. Bunu çözmenin iki yolu vardır. Birincisi veri tipi belirlerken aşağıdaki şekildeki bir kullanım tercih edilir.

Veri türlerinin bu şekilde belirtilmesi pek tercih edilmeyen bir yöntemdir. Çünkü içiçe bir çok isimalanının tanımlandığı durumlarda kaynak kodumuz gereksiz yere isimalanlarını yazmakla uzamaktadır. Bu hem okunabilirliği bozmakta hemde programcıya zaman kaybettirmektedir.

using System;
using 3DGraph;
using 2DGraph;

public class C#nedir
{
      public static void Main()
     {
          3DGraph.Nokta 3dnokta = new 3DGraph.Nokta();
          2DGraph.Nokta 2dnokta = new 2DGraph.Nokta();
     }
}
İkinci bir yöntem ise isimalanlarında bulunan sınıflar için takma isim (alias) kullanmaktır.Bu sayede isimalanlarını bir kez eklediketen sonra o isim alanında bulunan sınıflara doğrudan erişebiliriz. Bir isim alanındaki sınıfa takma ad aşağıdaki şekilde verilir.


using System;
using 3DGraph;
using 2DGraph;

public class C#nedir
{

     using Nokta2D= 2DGraph.Nokta;
     using Nokta3D = 3DGraph.Nokta;

      public static void Main()
     {

          Nokta2D 2dnokta = new Nokta2d();
          Nokta3D 3dnokta = new Nokta3d();
     }
}
Yukarıda mavi yazı ile berlirtilen yerlerde takma isimler tanımlanmıştır. Takma isimler ancak ve ancak tanımlanadıkları blok içinde geçerlidir. Başka bloklarda takma adları kullanmak derleme zamanında hataya yol açar.

Sonuç : İsimalanları component(program parçacığı) yazmanın en önemli parçasıdır. Bir "Merhaba Dünya" programı için isimalanı belitmek sizde takdir edersinizki pek anlam taşımamaktadır. İsimalanları daha çok kodumuzun tekrar kullılabilirliğini artırmak için geliştirilen sınıf kütüphanelerinde kullanılırlar.

Makale:
C# İsim uzayları (namespace) Hakkında C#, Visual C# ve .NET Sefer Algan
  • Yazılan Yorumlar
  • Yorum Yaz
EKİ
10
2005
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor