Merhaba.

C# eğitimlerimize devam ediyoruz. Bu yazımda sizlere C#’ın genel çalışma yapısından bahsetmeye ve bir kaç ipucu vermeye çalışacağım.

Standart bir kod geliştirme serüvenimizde C#’ın 3 temel katmandan oluştuğunu söyleyebiliriz.

Bir Kütüphane yada burada belirtildiği ismiyle isim uzayı bu isim uzayına ait sınıflar ve her bir sınıfa ait metodlardan oluşur.

Bunu daha net anlayabilmeniz için şöyle gerçek hayata uyarlayabiliriz.

Mesela bir şehir kütüphanesi düşünün başlı başına bir binadır yada yapıdır. C# da ki kütüphanelerde öyledir. Diğer kütüphanelerden bağımsız başlı başına birer yapıdır.

Bu kütüphanenin içine girdiğimizde pek çok bölümünün olduğunu görürüz. Farklı işlevleri yapan aynı türden kitapları barındıran bölümler. Örneğin Bilim, Edebiyat, Fen, Matematik, Yazılım gibi. Gördüğünüz gibi bir kütüphane içinde birden fazla bölüm olabilir. Buradaki bölümler C# da sınıflara denk gelir. Ve bir isim uzayı içersinde birden fazla sınıf bulunabilir.

Bir bölüme odaklandığımızda belki yüzlerce, belki binlerce o bölüme ait kitaplar bulunacaktır. İşte bu her bir kitaba C# da metod diyeceğiz. Bir sınıf içinde birden fazla metod olabilir. Aynı zamanda bir kitabın içinde aynı konunun birden fazla çözümü, birden fazla yöntemi ele alınabilir. İşte bunlara da bir metodun Overload aşırı yüklenmiş hali diyeceğiz. Son bahsettiğim olaya daha sonra daha detaylı gireceğim.

Not: Metodlar içinde metodların çağırılabildiğini unutmamalıyız.

Bir şekille tekrar ele alacak olursak.

Şimdi bu işlemleri birazda kod tarafında bir kaç ipucu ile devam edelim.

Kod kısmında kullanacağımız sınıflar ve metodlar hangi isim uzayına aitse projenin başında using ifadesi ile programa deklere edilmeli tanıtılmalıdır.

Bir örnek vermek gerekirse.

Burada gördüğümüz MessageBox sınıfı System.Windows.Forms kütüphanesi ait bir sınıfdır. Bu sınıfın bu şekilde hatasız kullanılabilmesi için de yukarıdaki gibi kütüphanenin deklere edilmesi gerekir.

Peki ya deklere etmemiş olsaydık ne olacaktı buna bakalım.

Gördüğünüz gibi VS MessageBox sınıfının ait olduğu kütüphaneyi bulamadı ve ben böyle bir şeyi tanımıyorum anlamladıramadım diyor ve hata veriyor. Gördüğümüz gibi hata aldığımız satırda hatalı bölümün altının kırmızı ile çizilmiş olduğunu görürsünüz.

Diyelim ki bu hatanın sebebini hemen anlayamadınız. Bunu nasıl öğrenebileceğiz.

Bunun için Error List bölümüne bakmamız yeterli gelecektir.

Burada zaten hatamızın ne olduğunu net bir şekilde anlayabiliyoruz.

Bazen çok uzun soluklu programlarımızda derleme sonrası bir hata alabiliriz. O hatanın nerede olduğunu hemen göremeyebiliriz. Bunun için hata listesinde hatanın üzerine çift tıklarsak bizi hatanın olduğu satıra götürecektir.

Bu hatadan kurtulmak için kütüphaneyi deklere etmemiz yeterli olacaktır.

Peki kullanmaya çalıştığımız sınıfın hangi kütüphaneye ait olduğunu bilmiyorsak bunu nasıl yapacağız.

Google tabi ki yardımımıza yetişebilir. Ama bunun için google aramasına gerek yoktur.

Hatalı kod satırının üzerine gidince size öncelikle hatanın ne olduğunu göstercektir.

Çözümü bulmak içinse Alt +Enter yapabilirsiniz.

İşte bize olası çözümleri gösterdi. Buradan anlıyorum ki MessageBox sınıfı System.Windows.Forms  kütüphanesine ait bir sınıfmış. Çözüm önerisine çift tıkladığımda benim yerime bu kütüphaneyi using ifadesi ile oluşturacaktır.

İşte Sonuç.

Burada olayı biraz daha senaryolaştırıp olayı tam olarak kavramaya çalışalım.

C# kod kütüphanesini Türkiye gibi düşünün. Türkiye’de bir sürü kütüphane olabilir. Oluşturduğunuz projeyi bir il gibi düşünün. Siz bu il içinde varlık gösterebilecek kendi kitaplarının kullanımını sağlayacak hangi kütüphanelere izin verirseniz onlar orada işlev görebilirler. Bunu yaptığımız yer, projeye referans eklediğimiz yerdir. Eğer bir kütüphane örneğin yukarıdaki System.Windows.Forms kütüphanesi refere edilmez ise bu ilden sorumlu olan yönetici (VS) o kütüphaneden haberdar olamayacaktır. O kütüphaneye ait hiç bir bölüm hiç bir kitap da bu proje içinde kullanılamayacaktır.

Kütüphanelerimizi Nasıl Projemize Ekleyebiliriz?

Başvurular sekmesi altında listelenen tüm kütüphaneler bu proje içinde kullanılabilecek kütüphanelerdir. Eğer System.Windows.Forms kütüphanesi burada eklenmemiş olsaydı, using ifadesiyle programa onu tanıtma imkanımızda olmayacaktı.

Eğer o kütüphane burada ekli olmasaydı yapacağımız işlem.

Bu işlem sonunda kütüphane proje içinde tanımlı hale gelecektir.

Hatamıza geri dönersek başka şekilde çözme ihtimalimiz var mı ona bakalım.

Kurgumuza devam edelim.

Projeniz içinde birden fazla iş yapılacağını ve Visual Studio’nun da bu işlerin başındaki yönetici olduğunu varsayalım. Yöneticimiz doğal olarak deklere edilen tüm kütüphanelerin içeriklerini de biliyor olmalı.

Biz yöneticiye using ifadesi ile ben bu iş için System.Windows.Forms kütüphanesini de kullanacağım diye bildirdikten sonra MessageBox diye bir sınıf çağırdığımda yönetici bunun o kütüphaneye ait olduğunu bilir ve geçiş izni verir. Hataya sebep olmaz. Başlangıçta tüm projede kullanılabilecek kütüphaneler arasına diyelim ki System.Windows.Forms kütüphanesine ekledik ama yapılacak bir iş içinde bunu kullanacağımı yöneticiye bildirmedim.

O zaman kullanacağım bir sınıfın ona ait olduğunu her defasında yöneticiye bildirmem gerekir.

Gördüğünüz gibi yönetici kütüphaneye bakar bu kütüphane projede kullanılabilecek bir kütüphanemi evet öyleyse yine geçiş izni verecek ve hata almayacağız.

Yukarıya baktığınızda kütüphane tanımlı değildir. Ama yaptığımız işlem sonunda  da bir hata almadık.

Ama bu işlem uzun süreçli bir kod yazma işinde çokta mantıklı bir yöntem değildir. Kütüphanemizi o iş birimine tanıtıp işlerimizi daha kolay ve kodları karmaşıklaştırmadan işimize devam edebiliriz. Çünkü bu, ileride kod okunurluğunu da etkileyecektir. Kodların okunabilir ve anlaşılabilir olması bir yazılımcının en asli görevlerinden biridir. Takım çalışmalarında bu durum daha büyük önem arz edebilmektedir.

C# ve Visual Studio’da bir yaşam döngüsü içinde kafanızda örneklendirerek gidebilirseniz , öğrenme ve kavrama süreciniz çok hızlanacaktır. Çünkü yapay olan her yapı doğadaki canlı ve cansız yapılar model alınarak şekillendirilmektedir.

Şimdilik bu kadar diyelim. Bir sonraki Eğitim yazımda görüşmek üzere. Selametle kalınız.

Facebook Sayfamizdan Bizleri Takip Edebilirsiniz