C# 4.Ders: C# Express Edition

Bu konuyu okuyanlar

Berkin Bozdoğan

Müdavim
Katılım
18 Mayıs 2005
Mesajlar
4,926
Reaksiyon puanı
38
Puanları
0
Memik Yanık, C# Express Edition'un kullanımı üzerine bilgiler vererek C# derslerine devam ediyor. Birçok örnek kullanımlar barındıran bu dersi kaçırmayın.


Bildiğiniz gibi Microsoft firması son birkaç yıldır .NET Framework adı verilen sınıf kitaplığını ücretsiz olarak dağıtmaktadır. Bütün .NET Framework sürümlerinde hazır sınıflardan başka Visual Basic, C# ve C++ derleyicileri de bulunmaktadır. Başka bir deyişle herhangi bir .NET Framework sürümünden yararlanıp Visual Basic veya C# dilinde uygulamalar geliştirmek mümkündür. Ne ki Not Defteri veya başka bir editörle C# veya Visual Basic programları yazıp DOS penceresinde derlemek zahmetli ve günümüz şartlarında iğneyle kuyu kazmak gibidir. C#'la ilgili ilk iki derste Not Defteri ile konsol uygulamaları geliştirip C#'a alışmaya çalışmıştık.

Çözüm ise Microsoft ürünü Visual Studio adı verilen program geliştirme aracından veya IDE'den yararlanmaktadır. Visual Studio paketi ile hem Web uygulamaları hem C# hem C++ hem de Visual Basic dilini kullanan uygulamalar geliştirmek mümkündür. Microsoft firması 2004 yılından itibaren dillere özel ve Visual Studio'nun kısıtlı özelliklere sahip sürümlerini hazırlayıp ücretsiz olarak dağıtmaya başladı. Bu sürümlere Express Edition adı verildi. Visual Studio 2005 için konuşmak gerekirse Visual Studio 2005 ile .NET Framework 2.0 destekli ve istenilen programlama dilinde uygulama geliştirmek mümkün iken Visual Basic'e özel Express Edition ile ancak Visual Basic uygulaması geliştirmek mümkündür.

Bu söylenenlerden yola çıkarak C# için hazırlanmış Express Edition hakkında şunlar söylenebilir: Not Defteri ile uygulama geliştirmek istemeyenler ve Visual Studio 2005'i pahalı bulup edinemeyenler Express Edition'la idare edebililer.

Bu bölümde C# için hazırlanmış Express Edition 2005'in program geliştirme ortamı hakkında kısaca bilgi verile¬cektir. Tekrar etmek gerekirse Express Edition ilgili programlama dilinin veya derleyicinin adı olmayıp "program geliştirme ortamının" veya yaygın bilinen adıyla IDE'nin adıdır. C# için hazırlanan Express Edition yazdığınız programları derlerken .NET Framework ile gelen C# derleyicisinden yararlanır.

C# için hazırlanan Express Edition'ın indirip kurma konusunda sorun yaşıyorsanız daha önce bu amaçla hazırladığım FDF formatındaki metni okumanız önerilir. Visual C# 2005 Express Edition'ı(bu adlandırma kafaları karıştırdığı için zaman zaman "C# için hazırlanan Express Edition" deme gereğini duyuyorum) kurup çalıştırırsanız aşağıdaki gibi Visual C# 2005 Express Edition penceresi ile karşılaşırsınız.

cs_ders_4_resim_01.gif

Visual C# 2005 Express Edition çalıştırıldığında yeni proje hazırlayabilmeniz veya mevcut projeleri açabilmeniz için Start Page ekrana getirilmektedir. Recent Projects kutusundaki Open ve Create seçenekler ile mevcut projeleri açabilir yeni projeler hazırlayabilirsiniz. İsterseniz Start Page sayfasını kapatabilirsiniz.

Proje Hazırlamak

Daha önce açılıp kapatılan Visual Studio projeleri Start Page sayfasında Recent Projects kutusunda listelenmektedir. Yukarıda verilen ekran görüntüsünü aldığım sırada herhangi bir C# projesini daha önce açıp üzerinde çalışmamıştım.

Mevcut projelerden birisini açmak istiyorsanız Open seçeneğinin karşısındaki Project linkini tıklamanız gerekir. Yeni bir C# projesi hazırlamak üzere Start Page'deki Create seçeneğinin Project linkini tıklarsanız ekrana New Project diyalog kutusu gelir. Bu diyalog kutusunda Visual C# için hazırlanan Express Edition ile birlikte verilen şablonlar listelenmektedir.

cs_ders_4_resim_02.gif

Madem daha önceki derslerde DOS penceresinde derlenip çalıştırılan C# programları hazırladık; kaldığımız yerden devam etme niyetine bir konsol uygulaması hazırlayalım. Bu amaçla New Project diyalog kutusunda Console Application şablonunu seçip Name kutusuna konsol uygulamasına vermek istediğim adı yazdım. Bu şablonu seçip OK düğmesini tıklarsanız aşağıdaki gibi bir Express Edition penceresi ile karşılaşırsınız.

cs_ders_4_resim_03.gif

Express Edition tarafından hazırlanan bu kodu incelerseniz size yabancı gelen fazla bir şeyin olmadığını fark edersiniz. Şimdiye kadar anlattıklarımıza ek olarak System.Collections.Generic ve System.Text adlı Namespace'ler kodu dahil edilmiştir. Zaten daha önce verdiğimiz kısacık örneklerde bu Namespace'lerdeki sınıflara gerek duymamıştık. New Project diyalog kutusunda uygulamaya vermiş olduğum ad aynı zamanda Namespace adı olarak kullanılmış.

Bu şartlarda "Proje1" adını verdiğim konsol uygulaması henüz bellekte tutulmaktadır. Henüz herhangi bir değişiklik yapmadığımız bu konsol uygulamasını kaydedelim. Bu amaçla File menüsünden Save All komutunu verebilir veya Standard araç çubuğundaki Save All düğmesini tıklayabilirsiniz. File menüsünden Save All komutunu verdiğinizde ekrana aşağıda verdiğim Save Project diyalog kutusu gelir.

cs_ders_4_resim_04.gif

Her ne kadar projeyi veya konsol uygulamasını hazırlarken New Project diyalog kutusunda bir ad vermekle birlikte projeyi kaydederken bu adı değiştirme imkanımız var. Projeye vermek istediğiniz adı Name kutusuna, projenin kaydedileceği klasörü ise Location klasörüne yazmanız gerekir. Klasör adını doğrudan yazmak yerine Browse düğmesini tıklayabilirsiniz.

Save Project diyalog kutusuna ayrıca Solution Name başlıklı bir metin kutusu bulunmaktadır. C# 2005 Express Edition ve Visual Studio sayesinde bir veya birden fazla proje bir araya getirilerek Solution hazırlanmaktadır. Başlangıçta proje adı ile proje grubu işlevi gören "Solution" adının aynı olacağı varsayılmaktadır. Projenin kaydı sırasında hazırlanan dosya veya klasörleri sizlere göstermek için Solution'a farklı bir ad verdim.

cs_ders_4_resim_05.gif

Express Edition ile hazırlanan projelerin geçerli kullanıcıya ait "Belgelerim" klasörünün altındaki "Visual Studio 2005\Projects" klasörüne kaydedilmek istendiği varsayılmaktadır. Bu konsol uygulaması için Express Edition tarafından hazırlanan klasör ve dosyalara dikkatinizi çekmek için Location metin kutusunda "C:\Projeler" yazdım.

Proje hazırlanırken belirtilen klasörün altında önce Solution ile aynı ada sahip bir klasör hazırlanıyor. Ardından Solution'a ait klasörün içinde proje için ayrı bir klasör hazırlanmaktadır. Çünkü Solution'lar çok sayıda projeye sahip olabilirler. Proje için hazırlanan klasör ve dosyaları aşağıda görebilirsiniz.

cs_ders_4_resim_06.gif

Bu ekran görüntüsünü incelerseniz Solution için hazırlanan klasörün içinde proje ile aynı ada sahip bir klasörün hazırlanıp projeye ait dosyaların bu klasöre yerleştirildiğini görebilirsi¬niz. Solution birden fazla projeden meydana gelmeyecekse Solution ile projeye ait dosyaların bir arada olmasını sağlayabilirsiniz.

Solution için ayrı bir klasör hazırlanmasını istemiyorsanız Save Project diyalog kutusundaki Create directory for solution onay kutusunu pasif duruma getirmelisiniz. Bu onay kutusunu pasif duruma getirdiğinizde Save Project diyalog kutusunda Solution'a ad veremezsiniz. Aşağıda verilen ekran görüntüsünü "Create directory for solution" onay kutusunu pasif duruma getirip "Proje1" adında bir konsol uygulaması hazırladıktan sonra aldım.

cs_ders_4_resim_07.gif

Eminim ki bu dersleri izleyenlerin çoğunluğu şimdiye kadar bilgisayarlarına Express Edition'ı kurdular ve bu metni okurken bir taraftan yukarıda yaptığım gibi kendileri de konsol uygulaması hazırladılar. Bu ekran görüntüsüne veya kendi hazırladığınız proje için hazırlanan klasöre bakarsanız Express Edition'nın konsol uygulaması için bir çok sayıda klasör ve dosya hazırladığını fark etmiş olmalısınız.

Express Edition ile yukarıda anlatılan şekilde hazırlanan projeyi çalıştırırsanız projenin çalışması ile çalışmasının sona ermesi bir olur. Projenin veya konsol uygulamasının çalışmasının hemen sona ermesini engellemek için aşağıdaki gibi 3 satır ekledim.

using System;
using System.Collections.Generic;
using System.Text;
namespace Proje1
{
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine("shiftdelete.net");
System.Console.Write("çıkmak için bir tuşa basın");
System.Console.Read();
}
}
}

Bu satırlar Express Edition penceresinde Main() metodu ile sınırlanan bloğa yazılıp sonra da Debug menüsünden Start Debugging komutu verilir veya Standard araç çubuğundaki Start Debugging düğmesi tıklanırsa Express Edition otomatik olarak derleme yapıp EXE dosyayı hazırlayıp çalıştırır. Hazırlanan EXE dosya Bin klasörü içinde yer alan Debug klasörüne kaydedilir.

cs_ders_4_resim_08.gif

Fırsattan istifade hemen kısa bir reklam arası vereceğim: Daha önce Visual Studio veya Express Edition'ı temel alan programcılık kitabı incelemiş olanların malumu olduğu gibi dünyanın hiçbir yerinde hiç kimse Visual Studio veya Express Edition'ı böyle anlatmıyor. Hele hele biraz sonra anlatacaklarımı hiçbir kitabın başlangıç sayfalarında bulamazsınız. C# veya .NET uyumlu başka programlama dili hakkında kitap veya makale yazanlar burada anlattıklarımı bilmiyorlar mı? Bilmez olurlar mı? Bilirler, belki de bazıları Memik Yanık'tan daha iyi biliyorlar. O zaman neden anlatmazlar bunları? Nedeni çok basit: Onların Memik Yanık gibi ilk okumada anlaşılma gibi bir kaygıları yoktur. Tabii Memik Yanık ilk okumada mutlaka anlaşılacağım dediği için veya böyle bir tercihi olduğu için başka yazarların 10 sayfada anlattıklarını Memik Yanık 12 sayfada anlatır. Bu nedenledir ki bazıları her fırsatta "Memik Yanık kitaplarını ekran görüntüleri ile doldurup şişiriyor" diye beni suçlarlar

Express Edition tarafından hazırlanan SLN uzantılı dosya Solution dosyasıdır. Tekrar etmek gerekirse Solution'lar proje grubu gibi işlev görmekte ve birden fazla proje üzerinde çalışıldığı zaman kolaylıklar sağlamaktadır. Bu örnekte konsol uygulamamız bir projeden meydana geldiği için SLN uzantılı dosyayı şimdilik unutabiliriz.

Buradaki "csproj" uzantılı dosya ise proje dosyasıdır. "csproj" uzantılı proje dosyalarında projedeki form ve class'lar hakkında bilgi bulunmaktadır. Express Edition tarafından hazırlanan proje dosyasının içeriğini size göstermek için Not Defteri'nden yararlandım. XML formatındaki bu dosyaya şimdilik ilgisiz kalabilirsiniz.

cs_ders_4_resim_09.gif

Konsol uygulaması için Express Edition tarafından hazırlanan SLN ve CSPROJ uzantılı dosyalarla ilgimizi şimdilik kopardıktan sonra geriye bir tek "program.cs" dosyası kaldı. Şimdi "program.cs" dosyasını Not Defteri ile açıp içeriğini size göstereceğim.

cs_ders_4_resim_10.gif

Gördüğünüz gibi bu satırlar Express Edition penceresine getirilen satırlar ile aynıdır. Daha önceki C# sürümlerini ve Visual Studio 2003'ü kullananlar için söylemek gerekirse Microsoft firması Visual Studio 2005 ve C# 2.0'dan itibaren C# projelerine "program.cs" adında bir dosyayı dahil etmeye başladı ve projeler bu dosyadan, başka bir deyişle bu dosyadaki Main() metodundan itibaren çalışmaktadır.

Konsol uygulamalarında başlangıçta kod içeren bir tek "program.cs" dosyası olduğu için konsol uygulaması çalıştırıldığında işletilmesini istediğiniz satırları Main() metodunun içine yazabilirsiniz. Şimdi öyle bir ayarlama yapacağım ki bu konsol uygulaması çalıştırıldığı zaman ekrana bir pencerenin gelmesini sağlayacağım.


cs_ders_4_resim_11.gif

Bu kodu dikkatlice incelerseniz using bloğunda System.Windows.Forms adlı Namespace'i koda dahil etmiş olduğumu fark edersiniz. Aynı satırı sizler yazmaya kalkışırsanız hata meydana gelir. Çünkü bu Namespace .NET Framework ile gelen System.Windows.Forms.dll adlı DLL dosyasında yer almaktadır. .NET Framework'e ait klasöre baktığınızda bu dosyayı görebilirsiniz.

Konsol uygulamaları dahilinde ekrana pencere getirmek için bu DLL dosyasının konsol uygulamasına dahil edilmesi gerekiyor. Bunun için Express Edition penceresi içinde yer alan Solution Explorer penceresinden yararlanıp Add Reference diyalog kutusunu ekrana getirip System.Windows.Forms.dll referansını uygulamaya dahil etmelisiniz. Aşağıda verdiğim ekran görüntüsünü bu referans veya DLL dosyasını uygulamaya dahil ettikten sonra aldım.


cs_ders_4_resim_12.gif

Bu konuda daha sonra bilgi verileceği için bu örneği denemeyebilirsiniz. Konsol uygulamaları üzerinde fazla durmayacağım için referans vs nedir gibi soruları şimdilik atlıyorum. Yukarıda verdiğim konsol uygulaması çalıştırıldığı zaman önce bir DOS penceresi açılır. Ardından yaptığım hazırlıktan dolayı ekrana bir pencere gelir. Bu pencereyi kapattığınızda konsol uygulamasının çalışması sona erer ve DOS penceresi kapatılır.


cs_ders_4_resim_13.gif

Windows Forms Uygulamaları

Daha önceki derslerde söylendiği gibi konsol uygulamalarına çok az ihtiyaç duyacağınız için Express Edition ile hazırlanan konsol uygulamaları üzerinde fazla durmaya gerek duymadan Windows Forms denilen normal uygulamalara odaklanacağız. Bu nedenle yukarıda hazırladığım konsol uygulamasını kapatıp ekrana New Project diyalog kutusunu getirip Windows Application şablonunu seçtim.

cs_ders_4_resim_14.gif

Bildiğiniz gibi C# için hazırlanan Express Edition ile hazırlanan projelerde New Project diyalog kutusunda projeye verilen ad sonradan değiştirilebilmektedir. Projeye vermek istediğim adı Name kutusuna yazıp OK düğmesini tıklayınca aşağıdaki gibi bir Visual C# 2005 Express Edition penceresi ile karşılaştım.


cs_ders_4_resim_15.gif

Windows Application şablonu ile hazırlanan projeye bir form dahil edilmekte ve bu form açılıp Express Edition penceresine gerilmektedir. Bu proje üzerinde herhangi bir değişiklik yapmadan çalıştırırsanız karşınıza bu form veya pencere gelir.

Bu formun üzerine hemen düğmeler, TextBox'lar veya ListBox'lar yerleştirmek yerine Windows Application şablonu ile hazırlanan projenin özelliklerine bakalım. Bu amaçla Solution Explorer penceresini açtım.


cs_ders_4_resim_16.gif

Express Edition ile C# projesi hazırlandığı zaman çok kullanılan bazı referanslar veya namespace ve sınıfları içeren DLL dosyaları projeye dahil edilmektedir. Hatırlarsanız yukarıdaki sayfalarda konsol uygulaması dahilinde ekrana form veya pencere getirmek için System.Windows.Forms'deki Form adlı sınıftan yararlanmıştık.

Üzerinde çalışılan projede .NET Framework ile gelen sınıflardan birisinden yararlanmak için o sınıfın yer aldığı Namespace'i içeren DLL dosyasının veya referansın projeye dahil edilmesi gerektiği için Solution Explorer penceresinden yararlanıp ekrana Add Reference diyalog kutusunu getirmiştik.

Benzer durum Express Edition ile hazırlanan Windows Forms uygulamaları için de geçerlidir. Visual C# 2005 Express Edition en çok gerek duyulan referansları projelere kendisi dahil ettiği için bir süre referanslar ile ilgilenilmeyebilir. Express Edition ile hazırlanan projelere dahil edilen referansları size göstermek için Solution Explorer penceresinde References seçeneğine ait artı (+) işaretini tıkladım.


cs_ders_4_resim_17.gif

Gördüğünüz gibi Express Edition tarafından 6 referans veya DLL dosyası Windows Forms uygulamalarına otomatik olarak dahil edilmektedir. Yararlanmak istediğiniz sınıf hangi DLL dosyası veya referansta yer alıyorsa o referansın Solution Explorer penceresinden yararlanılarak projeye dahil edilmesi gerekir. .NET Framework ile gelen herhangi bir sınıftan yararlanabilmek için referansın projeye dahil edilmesi yetmez. Ayrıca ilgili Namespace'in using deyimi ile koda dahil edilmesi gerekir.

Üzerinde çalışılan Solution veya proje hakkında bilgi edinilmek istendiği zaman başvurulan Solution Explorer penceresini dikkatlice incelerseniz projedeki formla ilgili olarak 3 dosyanın hazırlanmış olduğunu görürsünüz. Burada dikkatinizi öncelikle "Program.cs" dosyasına çekmek istiyorum. Daha önceki derslerden bildiğiniz gibi C# projelerinin başlangıç noktası Main() metodudur. Express Edition veya Visual Studio ile hazırlanan projelerde Main() metodu "Program.cs" adlı kod dosyasında bulunduğu için bu dosya önemlidir.

Her ne kadar bu dosya önemlidir desem bile bu dosyaya kayıtsız kalıp usta işi programlar yazmak mümkündür. Ne ki işin geri planının anlaşılması için bu dosyanın üzerinde biraz durmak bir zorunluluk. Solution Explorer penceresinde "Program.cs" dosyasını çift tıklarsanız bu kod dosyasının içeriği görüntülenir.


cs_ders_4_resim_18.gif

Express Edition tarafından hazırlanan bu kodu dikkatlice incelerseniz System, System.Collections.Generic ve System.Windows.Forms adlı 3 Namespace'in koda dahil edildiğini görebilirsiniz. Program.cs dosyasındaki diğer satırlar hakkında şimdi verilecek bilgilerin altyapısı olmadığı için üzerinde fazla durmayacağım. Buna rağmen şu satırı dikkatinize sunmak istiyorum.

Application.Run(new Form1());

Bu satırı daha önce görmüş olanlar şöyle bir açıklamayı okumuş olabilirler: "Uygulama Run() metodu ile başlatılmaktadır". Aslında bu tek cümlelik tanım yanlış değildir. Ne ki bu tanım bu satırla nelerin yapıldığını, geri planda nelerin geliştiğini açıklamaya yetmiyor.

Konunun devamında anlatılacağı gibi Express Edition ile bir Windows Forms uygulaması hazırlandığında System.Windows.Forms adlı Namespace'teki Form adlı Class'ın mirasçısı "Form1" adında bir Class hazırlanmaktadır. İşte bu satırda "Form1" adlı Class'ın örneği alınıp Application nesnesinin Run() metoduna parametre olarak verilmektedir. Yeterince açık olmayan bu iki cümlenin açıklamasını bir sonraki derse bırakıyorum.

Yazan: Memik Yanık
SDN - http://shiftdelete.net
 

MehmetMiri

Öğrenci
Katılım
10 Ekim 2007
Mesajlar
58
Reaksiyon puanı
0
Puanları
0
Çok Teşekkürler Memik hocam

Hocam muhteşem bir anlatış tarzınız var anlamamk mümkün değil aklımda bir kaç soru var tabikide ama bunu sizde söylemişsiniz ileriki derslerde anlatacağım gibisinden...

Saygılarımla MEHMETMİRİ
 

ennteresan

Asistan
Katılım
3 Eylül 2007
Mesajlar
312
Reaksiyon puanı
1
Puanları
0
Sayın Memik hocam ben de çok teşekkür ederim. ders anlatımları tek kelime ile mükemmel. Ben elime geçen dokümanlar arasında bu kadar iyi anlaşılır anlatım yok.
Saygılarımla...
 
Üst