bilgiz.org

C# İle biLGİsayar programlama temelleri (C# Programlama Kitabı) Svetlin Nakov & Co




Sayfa3/31
Tarih02.07.2017
Büyüklüğü3.36 Mb.

Indir 3.36 Mb.
1   2   3   4   5   6   7   8   9   ...   31

0.27.21 Bölüm 20: Nesne Yönelimli Programlamanın İlkeleri
"Nesne Yönelimli Programlamanın İlkeleri" Bölümü’nde, nesne yönelimli programlamanın (OOP) ilkelerini tanıtacağız: sınıf kalıtımı, arayüzlerin gerçekleştirimi, veri ve davranış soyutlama, veri sarmalama ve uygulama detaylarını gizleme, çokbiçimlilik ve sanal yöntemler. Uyum ve bağlaşım ilkelerini detaylı olarak açıklayacağız. Kısaca nesne yönelimli modellemeyi ve belirli bir iş problemine dayanan nesne modeli oluşturma da açıklayacağız ve nesne yönelimli modellemede UML ve rolünü tanıyacağız. Son olarak, kısaca tasarım desenlerini tartışacağız ve pratikte sık kullanılan tasarım desenleri için örnekler vereceğiz.
Mihail Valkov tarafından düzenlenen bölüm Mihail Stoynov tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Mihail Stoynov tarafından yazılmış çalışmalarına dayanmaktadır. Vasya Stankova ve Momchil Rogelov tarafından İngilizce’ye çevrilmiştir (Ivan Nenchovski tarafından düzenlenmiştir).
0.27.22 Bölüm 21: Yüksek Kalite Programlama Kodu
"Yüksek Kalite Programlama Kodu" Bölümü’nde, yüksek kaliteli programlama kodu yazmanın temel kurallarına göz atacağız. Program elemanları (değişkenler, yöntemler, sınıflar ve diğerleri) için adlandırma kuralları, biçimlendirme ve kod yerleşimi yönergeleri, sınıf ve yöntemleri yüksek kaliteli oluşturmak için en iyi uygulamalar, ve yüksek kaliteli kod dokümantasyonunun ilkeleri üzerinde duracağız. Yüksek kaliteli ve düşük kaliteli birçok kod örnekleri verilecektir. Çalışma esnasında, bir tümleşik geliştirme ortamının, bazı işlemleri (biçimlendirme ve mevcut kodun yeniden yapılandırılması gibi) otomatik hale getirmek için gerektiğinde nasıl kullanılacağı açıklanacaktır. Otomatik test yapmak için endüstriyel bir yöntem olarak bilinen birim testleri de ele alınacaktır.
Pavel Donchev tarafından düzenlenen bölüm Mihail Stoynov ve Svetlin Nakov tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Mihail Stoynov, Svetlin Nakov ve Nikolay Vasilev tarafından yazılmış çalışmalarına dayanmaktadır. Blagovest Buyukliev tarafından İngilizce’ye çevrilmiştir (Dyanko Petkov, Mihail Stoynov ve Martin Yankov tarafından düzenlenmiştir).


0.27.23 Bölüm 22: Lambda İfadeleri ve LINQ

"Lambda İfadeleri ve LINQ" Bölümü’nde, C# dilinin daha gelişmiş ve ileri yeteneklerinden bazılarını tanıtacağız. Daha kesin olmak gerekirse, lambda ifadeleri ve LINQ kullanarak koleksiyonlara sorguların nasıl yapıldığının açıklığa kavuşturulması için özel dikkat vereceğiz. Zaten yaratılmış sınıflara uzantı yöntemlerini kullanarak nasıl işlevsellik ekleneceğini açıklayacağız. Anonim türleri tanıtacağız ve kısaca onların doğasını ve kullanımını tanımlayacağız. Lambda ifadeleri de tartışacağız ve pratikte yerleşik lambda fonksiyonlarının çoğunun nasıl çalıştığını göstereceğiz. Daha sonra C# parçası olan LINQ sözdizimi içine dalacağız. ne olduğunu, nasıl çalıştığını ve bunu kullanarak ne tür sorgular yapabileceğimizi öğreneceğiz. Son olarak, LINQ anahtar kelimelerini tartışacağız, onların anlamı ve birçok örnek ile yeteneklerini ortaya koyacağız.
Veselin Kolev tarafından düzenlenen bölüm Nikolay Kostov tarafından yazılmıştır. Nikolay Kostov tarafından İngilizce’ye çevrilmiştir (Zhasmina Stoyanova ve Mihail Stoynov tarafından düzenlenmiştir).

0.27.24 Bölüm 23: Problem Çözme Metodolojisi


"Problem Çözme Metodolojisi" Bölümü’nde, programlama problemlerinin çözümü için tavsiye edilebilir bir yaklaşımı tartışacağız ve biz somut örnekler ile göstereceğiz. Problemleri çözerken izlememiz gereken mühendislik ilkelerini (büyük ölçüde matematik, fizik ve diğer disiplinlerdeki sorunlara uygulanan) görüşeceğiz ve uygulama halinde onları göstereceğiz. Birkaç örnek problem çözerken geçmemiz gereken adımları anlatacağız ve bu adımları takip etmezsek yapabileceğimiz hataları göstereceğiz. Problem çözmenin genellikle atlanan bazı önemli adımlarını (örneğin test etmek gibi) dikkate alacağız.
Veselin Georgiev tarafından düzenlenen bölüm Svetlin Nakov tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Svetlin Nakov tarafından yazılmış çalışmalarına dayanmaktadır. Ventsi Shterev ve Martin Radev tarafından İngilizce’ye çevrilmiştir (Tihomir Iliev ve Nedjaty Mehmed tarafından düzenlenmiştir).

0.27.25 Bölüm 24, 25, 26: Örnek Programlama Sınavı


"Örnek Programlama Sınavı (Konu # 1, Konu # 2 ve Konu # 3)" Bölümü’nde, üç örnek programlama sınavından dokuz örnek problemin açıklamalarına bakacağız ve çözüm önereceğiz. Onları çözme yolunda, "Problem Çözme Metodolojisi"nde açıklanan metodolojiyi uygulamaya koyacağız.
Radoslav Todorov, Radoslav Ivanov ve Teodor Stoev tarafından düzenlenen bölüm Stefan Staev, Yosif Yosifov ve Svetlin Nakov tarafından yazılmıştır. Tüm bölümün içeriği "Java ile Programlamaya Giriş" kitabının Stefan Staev, Svetlin Nakov, Radoslav Ivanov ve Teodor Stoev tarafından yazılmış çalışmalarına dayanmaktadır. Stanislav Vladimirov, Ivaylo Gergov, Ivan Nenchovski ve Ivaylo Gergov tarafından İngilizce’ye çevrilmiştir (Tihomir Iliev ve Nedjaty Mehmed tarafından düzenlenmiştir).

0.27.26 Bölüm 27: Sonuç
Sonuç olarak uzman bir yazılım mühendisi olarak bu kitaptan sonraki gelişiminize devam etmek için daha fazla bilgi vereceğiz. Telerik Yazılım Akademisi'nde – Bulgaristan'da yazılım geliştirme uzmanları için en büyük eğitim merkezinde – verilen ücretsiz kurslardan, nasıl uygulanacağından, ne öğreneceğinizden, nasıl bir kariyer yolu seçeceğinizden ve diğer birkaç kaynaktan söz edeceğiz.
Bölüm Svetlin Nakov tarafından yazılmıştır. Ivan Nenchovski tarafından İngilizce’ye çevrilmiştir (Svetlin Nakov tarafından düzenlenmiştir).
Bölüm 1. Programlamaya Giriş

1.1 Bölümün İçindekileri
Bu bölümde programlamanın temel terminolojisine göz atacağız ve ilk programımızı yazacağız. Programlama nedir sorusunu ve bilgisayarlar ve programlama dilleri ile bağlantısını tanıtacağız.
Yazılım geliştirmenin farklı aşamalarını kısaca gözden geçireceğiz.
C# dilini, .NET platformu ve yazılım geliştirmede kullanılan farklı Microsoft teknolojilerini tanıtacağız. C# programlama için gereken yardımcı araçları inceleyeceğiz ve ilk bilgisayar programımızı yazmak için C# dilini kullanarak derleyeceğiz ve komut satırını ve bunun yanı sıra Microsoft Visual Studio tümleşik geliştirme ortamını kullanarak çalıştıracağız. .NET Platformu için dokümantasyon olarak düşünülmüş MSDN Kitaplığı’na kendimizi alıştıracağız, bu dilin yetenekleri ile ilgili çalışmamızda bize yardımcı olacaktır.

1.2 "Programlama" Ne Demektir?
Günümüzde bilgisayarlar vazgeçilmez hale gelmiştir. İşyerindeki karmaşık problemleri çözmek için bilgisayarlardan faydalanırız, karayolunda yön bulmaya yardımcıdırlar, eğlenmek ve iletişim kurmak için kullanılırlar. İş dünyasında, eğlence endüstrisi, telekomünikasyon ve finans sektöründe sayısız uygulamaları vardır. Bilgisayarların çağdaş toplumun sinir sistemi olduğunu söylemek bir abartı değildir ve onlar olmadan varlığını hayal etmek zordur.
Bilgisayarlar çok yaygın olmasına rağmen, az sayıda kişi gerçekten nasıl çalıştıklarını bilir. Gerçekte, bilgisayarlar değil, ancak bunların üzerinde çalışan programlar (yazılım) önemli meseledir. Bilgisayarları son kullanıcı için değerli yapan, hayatımızı değiştirmek için birçok farklı türdeki hizmetlere izin veren yazılımdır.
1.3 Bilgisayarlar Bilgiyi Nasıl İşler?
Programlamanın ne anlama geldiğini anlamak için, bir bilgisayar ve işletim sistemini kabaca tüm atölye, depo ve ulaşımıyla büyük bir fabrika ile karşılaştırabiliriz. Bu kaba karşılaştırma çağdaş bilgisayarda mevcut olan karmaşıklık düzeyini hayal etmeyi kolaylaştırır. Bir bilgisayarda çalışan birçok süreç vardır ve bunlar bir fabrikadaki atölye ve üretim hatlarını temsil eder. Üzerindeki dosyalar ile birlikte sabit disk, ve çalışma belleği (RAM) depoları temsil eder, bilgi girişi ve çıkışını sağlayan farklı protokoller ise ulaşım sistemlerini temsil eder.
Bir fabrikada yapılan ürünler farklı farklı atölyelerden gelir. Depolardaki hammaddeleri kullanırlar ve tamamlanmış malları orada geri saklarlar. Hammaddeler, tedarikçiler tarafından depolara taşınır ve tamamlanan ürün depolardan satış yerlerine taşınır. Bunu yapmak için, farklı ulaşım türleri kullanılır. Hammadde fabrikaya girer, farklı işleme aşamalarından geçer ve ürünlere dönüştürülerek fabrikayı terk eder. Her fabrika tüketime hazır bir ürün olarak hammaddeleri dönüştürür.
Bilgisayar bilgi işleyen bir makinedir. Karşılaştırmamızdaki fabrikanın aksine, bilgisayar için, hammadde ve ürün aynı şeydir – bilgi. Çoğu durumda, girdi bilgileri daha önce taşındığı herhangi bir depodan (dosyalar veya RAM) alınır. Daha sonra, bir veya daha fazla işlem ile işlenir ve dışarıya yeni bir ürün olarak değiştirilmiş halde gelir. Web tabanlı uygulamalar, buna bir örnektir. Hammadde ve ürün aktarmak için HTTP kullanırlar, ve bilgi işlemek genellikle veritabanındaki içeriğin ayıklanması ve HTML biçiminde görselleştirme için hazırlanması ile ilgilidir.

1.4 Bilgisayarı Yönetmek
Bir fabrikadaki ürünlerin tüm imalat sürecinde pek çok yönetim seviyesi vardır. Ayrı makineler ve montaj hatları operatörler tarafından işletilir, atölyelerin yöneticileri vardır, ve bir bütün olarak fabrika genel yöneticiler tarafından yönetilir. Bunların her biri farklı bir seviyede işlemleri denetler. Makine operatörleri en düşük seviyede hizmet verir – düğmeler ve kollar ile makineleri kontrol ederler. Bir sonraki seviye atölye yöneticileri için ayrılmıştır. Ve en üst seviyede, genel yöneticiler fabrikadaki üretim süreçlerinin farklı yönlerini yönetirler. Emirler çıkararak bunu yaparlar.
Bilgisayarlar ve yazılımda da bu aynıdır – yönetim ve denetimin birçok seviyeleri vardır. En düşük seviye işlemci ve onun kayıt tutucuları tarafından yönetilir (düşük bir seviyede makine programları kullanılarak bu gerçekleştirilir) – atölyelerdeki makinelerin kontrolü ile karşılaştırabiliriz. İşletim sisteminin (örneğin, Windows 7) dosya sistemi, çevresel aygıtlar, kullanıcılar ve iletişim protokolleri gibi farklı sorumlulukları daha yüksek bir seviyede kontrol edilir – fabrikadaki farklı atölye ve departmanların yönetimi ile karşılaştırabiliriz. En üst düzeyde, uygulama yazılımını buluyoruz. Büyük miktarda işlemci operasyonlarını gerektiren, süreçler topluluğunun bütünü ile çalışır. Bu, kaynakların kullanımını en büyüğe çıkarmak ve kaliteli sonuçlar üretmek için bütün fabrikayı çalıştıran genel yöneticilerin seviyesidir.

1.5 Programlamanın Özü
Programlamanın özü, her seviyede bilgisayarın çalışmasını kontrol etmektir. Bu, aynı zamanda programlama talimatları olarak bilinen “emir” ve “komutlar” yardımıyla programcılar tarafından yapılır. "Programlamak" birbirini izleyen talimatlar yoluyla bilgisayarın çalışmasını organize etmek anlamına gelir. Bu komutlar (talimatlar) yazılı olarak verilmektedir ve tam olarak bilgisayar tarafından (sırasıyla işletim sistemi, CPU ve çevresel aygıtlar tarafından) takip edilmektedir.




"Programlama" bilgisayarın çalışmalarını bir şeyler yapması için organize etmek üzere birbiri ardı sıra gelen talimat dizilerinin yazılması anlamına geliyor. Bu talimatlar dizilerine "bilgisayar programları" veya "betikler" denir.



Bazı işleri gerçekleştirmek, tamamlamak veya bazı sonuçları elde etmek için uygulanan birbirini izleyen adımlar dizisine algoritma denir. Bu tanım programlama ile algoritmaların nasıl ilgili olduğunu anlatır. Programlama algoritmalar yoluyla, bilgisayara ne yapmak istediğinizi adımlar dizisi ile anlatmayı içerir.
Programcılar bilgisayarları kontrol eden bu talimatları oluşturan insanlardır. Bu talimatlar program olarak adlandırılır. Çok sayıda program vardır, ve bunlar farklı türde programlama dilleri kullanılarak oluşturulur. Her dil farklı bir seviyede bilgisayarı kontrol etmeye yöneliktir. Makine seviyesine (en düşük) yönelik diller vardır – örneğin Assembler. Diğerleri (işletim sistemi ile etkileşerek) sistem düzeyinde en yararlıdır, C gibi. Uygulama programlarını oluşturmak için kullanılan yüksek seviyeli diller de vardır. Bu dillere C#, Java, C++, PHP, Visual Basic, Python, Ruby, Perl, JavaScript ve diğerleri dahildir.
Bu kitapta C# programlama diline bakacağız – modern bir yüksek seviyeli dil. Bir programcı C# kullandığında, yüksek düzeyde komutlar verir, bir fabrikada genel yönetici pozisyonundan verilen emirler gibi. C# ile yazılmış programlar şeklinde verilen talimatlar doğrudan veya işletim sistemi üzerinden hemen hemen tüm bilgisayar kaynaklarına erişebilir ve kontrol edebilir. Basit C# programlarını yazmayı öğrenmeden önce, yazılım geliştirmenin farklı aşamalarına iyice bir göz atalım, çünkü programlama, en önemli aşama olmasına rağmen, tek başına değildir.

1.6 Yazılım Geliştirme Aşamaları
Yazılım yazma işi yazılım mühendisleri ve diğer uzmanlardan oluşan bütün bir ekibi kapsamakla beraber çok karmaşık ve zaman alıcı olabilir. Bunun bir sonucu olarak, programcıların hayatını kolaylaştıran pek çok yöntem ve uygulamalar ortaya çıkmıştır. Ortak yönleri her yazılım ürününün geliştirilmesi için pek çok farklı aşamadan geçmesidir:


  • Ürün gereksinimlerini toplamak ve işi başlatmak;

  • Planlama yapmak, mimariyi ve tasarımı hazırlamak;

  • Uygulama (program kodu yazmayı içerir) ve gerçekleştirim;

  • Ürün testi;

  • Dağıtım ve işletme;

  • Destek.



1.6.1 Ürün Gereksinimlerini Toplamak
Başlangıçta, belirli bir ürün için, sadece fikir vardır. Gereksinimlerin bir listesini içerir, burada kullanıcı ve bilgisayarın eylemleri tanımlanır. Genel durumda, bu eylemler zaten varolan etkinlikleri daha kolay hale getirir – maaşları hesaplama, balistik yörüngeleri hesaplama yada Google Maps üzerinde en kısa yolu arama verilebilecek bazı örneklerdir. Birçok durumda, yazılım, önceden var olmayan fonksiyonları yerine getirir – belli bir aktivitenin otomasyonu gibi.
Ürün için gereksinimler genellikle İngilizce veya başka herhangi bir dilde yazılmış belgeler şeklinde hazırlanır. Bu aşamada programlama yapılmaz. Gereksinimler belirli bir alanda sorunlara aşina olan uzmanlar tarafından tanımlanır. Programcılar tarafından anlaşılması kolay bir şekilde yazılır. Genel durumda, bu uzmanlar programcı değildir, onlara iş analistleri denir.
1.6.2 Planlama Yapmak, Mimariyi ve Tasarımı Hazırlamak
Tüm gereksinimler toplandıktan sonra planlama aşamasına gelinir. Bu aşamada, projenin uygulanması için programın yürütüleceği platformları, teknolojileri ve ilk mimarisini (tasarım) tanımlayan teknik bir plan oluşturulur. Bu adım yoğun miktarda yaratıcı çalışma ister, tecrübeli birçok yazılım mühendisi tarafından yerine getirilir. Onlara yazılım mimarları denir. Gereksinimlere göre, aşağıdaki kısımlar belirlenir:


  • Uygulamanın türü – örneğin konsol uygulaması, masaüstü uygulaması (GUI, Grafik Kullanıcı Arayüzü uygulaması), istemci-sunucu uygulaması, Web uygulaması, Zengin İnternet Uygulamaları (RIA), mobil uygulama, uçbirimden-uçbirime (peer-to-peer) uygulama veya diğerleri;

  • Yazılım mimarisi – örneğin tek katmanlı, çift katmanlı, üç katmanlı, çoklu katmanlı veya SOA mimarisi için;

  • Uygulanması için en uygun programlama dili – örneğin C# , Java, PHP, Python, Ruby, JavaScript veya C++, ya da farklı dillerin bir arada kullanılması;

  • Kullanılacak teknolojiler: platform (Microsoft .NET, Java EE, LAMP veya diğerleri), veritabanı sunucusu (Oracle, SQL Server, MySQL, NoSQL veritabanı veya diğerleri), kullanıcı arabirimi için teknolojiler (Flash, Java Server Faces, Eclipse RCP, ASP .NET, Windows Forms, Silverlight, WPF veya diğerleri), veri erişimi için teknolojiler (örneğin Hibernate, JPA veya ADO .NET Entity Framework), raporlama teknolojileri (SQL Server Raporlama Hizmetleri, Jasper Reports veya diğerleri) ve yazılım sisteminin çeşitli parçaların uygulanması için kullanılacak teknolojilerin pek çok diğer kombinasyonları;

  • Geliştirmeyi basitleştirecek geliştirme platformları, örneğin ASP.NET MVC (.NET için) Knockout.js (JavaScript için), Rails (Ruby için), Django (Python için) ve diğerleri;

  • Geliştirme ekibinin bir parçası olacak insanların sayısı ve becerisi (büyük ve ciddi projeler büyük ve deneyimli geliştirici ekipleri tarafından yapılır);

  • Geliştirme planı - Her aşama için işlevselliği, kaynakları ve zaman sınırlarını ayırır.

  • Diğerleri (ekibin büyüklüğü, takımın yerelliği, iletişim yöntemleri, vb).

Doğru analiz ve planlama yapmayı kolaylaştıran birçok kural bulunmasına rağmen, bu aşamada yoğun miktarda sezgi ve içgörü gereklidir. Bu adım geliştirme sürecinin daha fazla ilerlemesini önceden belirler. Bu aşamada sadece hazırlık yapılır, hiçbir programlama yoktur.

1.6.3 Uygulama
Programlama ile bağlantılı en yakın adım uygulama aşamasıdır. Bu aşamada, program (uygulama) verilen görev, tasarım ve mimariye göre uygulanır (yazılır). Programcılar programın (kaynak) kodunu yazmaya katılırlar. Küçük bir proje oluşturulurken, diğer aşamalar kısa olabilir yada tamamen atlanabilir, ancak uygulama her zaman vardır; aksi takdirde işlem yazılım geliştirme değildir. Bu kitap uygulama sırasında kullanılan becerileri açıklamayı esas almıştır – bir programcının zihniyetini oluşturmayı ve yazılım uygulamaları oluşturmak için C# dili ve .NET Platformu tarafından sağlanan tüm kaynakları kullanmak için bilgi birikimi sağlamayı.

1.6.4 Ürün Testi
Ürün testi yazılım geliştirmenin çok önemli bir aşamasıdır. Amacı tüm gereksinimlerin sıkı bir şekilde takip edildiğinden ve yerine getirildiğinden emin olmaktır. Bu süreç el ile uygulanabilir, ancak otomatik testlerle yapılması tercih edilen yoldur. Bu testler mümkün olduğunca denemeleri otomatik hale getiren küçük programlardır. Otomatikleştirilmesi çok zor olan işlevsellik parçaları vardır. Ürün denemelerinin kod kalitesini sağlamak için otomatik testler içermesinin yanı sıra manuel prosedürlere de yer verilmesinin nedeni budur.
Test (çalışma) süreci kalite güvence mühendisleri (QAs) tarafından yürütülmektedir. Yazılımdaki hataları (bug) bulmak ve düzeltmek için programcılar ile yakın bir çalışma içine girerler. Bu aşamada, koddaki hataları bulmak bir önceliktir ve neredeyse hiçbir yeni kod yazılmaz.
Birçok kusur ve hatalar genellikle test aşamasında bulunur ve uygulama aşamasına program geri gönderilir. Bu iki aşama çok yakından bağlantılıdır ve bir yazılım ürününün tüm gereksinimleri yerine getirmesinden ve dağıtım, kullanım aşamaları için hazır olmasından önce birçok kez bu iki aşama arasında geçişler yapılması çok yaygındır.
1.6.5 Dağıtım ve İşletme
Verilen bir yazılım ürününün işletilmesini sağlayan aşama dağıtımdır. Ürün karmaşık ve birçok kişiye hizmet veriyorsa, bu işlem yavaş ve pahalı olabilir. Daha küçük programlar için bu nispeten hızlı ve ağrısız bir işlemdir. En yaygın durumda, yükleyici adlı özel bir program geliştirilmiştir. Ürünün hızlı ve kolay kurulumunu sağlar. Ürünün büyük bir şirkette on binlerce kopyası işletilecekse, sadece dağıtım için destekleyici ek yazılım geliştirilir. Dağıtım başarıyla tamamlandıktan sonra, çalışması için ürün hazırdır. Bir sonraki adım, kullanmaları için çalışanları yetiştirmektir.
Verilebilecek bir örnek, Microsoft Windows'un yeni sürümünü devlet dairelerinin yönetim birimlerinde dağıtmak olacaktır. Bu süreç kurulum ve yapılandırma yazılımının yanı sıra çalışanların eğitimini kapsar.
Dağıtım genellikle yazılım üzerinde çalışan ekip tarafından yada eğitilmiş dağıtım uzmanları tarafından yapılır. Onlar sistem yöneticileri, veritabanı yöneticileri (DBA), sistem mühendisleri, uzman danışmanlar ve diğerleri olabilir. Bu aşamada, neredeyse hiç yeni kod yazılmaz, fakat başarılı bir dağıtım için tüm özel gereksinimlerini kapsayana kadar mevcut kodla oynanır ve yapılandırılır.

1.6.6 Teknik Destek
İşletim sürecinde, problemlerin ortaya çıkması kaçınılmazdır. Pek çok faktör problemlere neden olabilir – yazılım hataları, yanlış kullanım ya da hatalı yapılandırma, ancak çoğu problem kullanıcılar kendi gereksinimlerini değiştirdiğinde oluşur. Bu problemlerin bir sonucu olarak, belirli bir iş görevini çözmek için oluşturulan yazılım bu özelliklerini kaybeder. Bu geliştiriciler ve destek uzmanları tarafından ek katılım gerektirir. Destek süreci genellikle, yazılım ürünü ne kadar iyi olursa olsun, tüm yaşam döngüsü boyunca devam eder.
Destek süreci geliştirme ekibi tarafından ve özel eğitimli destek uzmanları tarafından yürütülmektedir. Yapılan değişikliklere bağlı olarak, birçok farklı insan sürece dahil olabilir - iş analistleri, mimarlar, programcılar, kalite mühendisleri, yöneticiler ve diğerleri.
Örneğin, maaşları hesaplayan bir yazılım programına bakacak olursak, servis verilen muhasebe sürecini ilgilendiren vergi mevzuatı her değiştiğinde güncelleştirilmesi gerekecektir. Örneğin, son kullanıcı donanım değiştirildiğinde destek takımın müdahalesi gerekli olacaktır, çünkü yazılımın yeniden yüklenmesi ve yeniden yapılandırılması gerekecektir.

1.6.7 Dokümantasyon
Dokümantasyon aşaması ayrı bir aşama değil ama tüm diğer aşamalara eşlik eder. Dokümantasyon yazılım geliştirme önemli bir parçasıdır, ve bir yazılım ürününün geliştirilmesi ve desteği sırasında farklı katılımcılar arasında bilgi aktarmayı amaçlamaktadır. Bilgi farklı aşamalardan geçtiği gibi, tek bir kademeden de geçebilir. Geliştirme dokümantasyonu genellikle geliştiriciler (mimarlar, programcılar, kalite mühendisleri ve diğerleri) tarafından oluşturulmuş bir belge topluluğunu temsil eder.

1.6.8 Yazılım Geliştirme Yalnızca Kodlamadan Daha Fazlasıdır
Gördüğümüz gibi, yazılım geliştirme, sadece kodlamadan (kod yazmadan) çok daha fazlasıdır, ve yazılım mühendisleri denilen uzmanları geniş bir yelpazede gerektiren bir dizi diğer süreçleri içerir – gereksinim analizi, tasarım, planlama, test ve destek gibi. Programlama yazılım geliştirmenin sadece küçük ancak çok önemli bir parçasıdır.
Yukarıdaki süreçler arasında programlama olmadan yazılım geliştiremeyeceğimiz için bu kitapta sadece programlamaya odaklanacağız.

1.7 İlk C# Programımız
C# dili ve .NET Platformu’nun derinliğine açıklamasına geçmeden önce, C# ile yazılmış bir programın nasıl çalıştığını gösteren basit bir örneğe göz atalım:


class HelloCSharp

{

static void Main(string[] args)



{

System.Console.WriteLine("Merhaba C#!");



}

}


Bu programın yaptığı tek şey varsayılan çıkış üzerinde "Merhaba C#!" mesajını yazdırmaktır. Çalıştırmak için hâlâ erkendir, bu yüzden sadece kendi yapısına göz atacağız. Daha sonra derlemek ve komut isteminden veya yanı sıra bir geliştirme ortamından belirli bir programı çalıştırmanın nasıl tam olarak yapıldığını anlatacağız.

1.7.1 İlk C# Programımız Nasıl Çalışır?
İlk programımız üç mantıksal bölümden oluşur:


  • Bir HelloCSharp sınıfının tanımı;

  • Bir Main() metotunun tanımı;

  • Main() metotunun içeriği.



1.7.1.1 Bir Sınıfı Tanımlamak
Programımızın ilk satırında HelloCSharp adında bir sınıfı tanımlarız. Bir sınıfın en basit tanımı class anahtar sözcüğünün ardından sınıf adını vermektir. Bizim programımızda sınıfın adı HelloCSharp olmuştur. Sınıfının içeriği kıvırcık parantez {} ile çevrili program satırlarını içeren bir blokta yer almaktadır.

1.7.1.2 Main() Metotunu Tanımlamak
Üçüncü satırda programımız için başlangıç ​​noktası olan Main() adlı bir yöntemi tanımlıyoruz. C# ile yazılmış her program şu başlığı (imza) taşıyan Main() yöntemi ile başlar:


static void Main(string[] args)


Yöntem yukarıda gösterildiği gibi bildirilmelidir, statik (static) ve boş (void) olmalıdır, bir adı olmalıdır Main ve parametre listesi olarak sadece bir parametre almalıdır, dize (string) türündeki bir dizi (array). Örneğimizde parametrelere args denmiştir, ancak bu zorunlu değildir. Bu parametre çoğu durumda kullanılmaz, bu nedenle atlanabilir (isteğe bağlıdır). Bu durumda programın giriş noktası basitleştirilebilir ve şöyle görünecektir:

static void Main()


Yukarıda belirtilen gereklerin herhangi biri karşılanmazsa, programı derlemek mümkündür, ancak başlangıç ​​noktası doğru olarak tanımlı olmadığı için program çalışmaya başlamaz.

1.7.1.3 Main() Metotunun İçeriği
Her yöntemin içeriği, imzasının ardından açılış ve kapanış küme parantezleri ile çevrili olarak gelir. Örnek programımızın sonraki satırında varsayılan çıktıya (konsol) bir mesaj, "Merhaba, C #!", yazdırmak için System.Console sistem nesnesini ve WriteLine() metotunu kullandık.
Main() yönteminde rasgele bir ifade dizisi yazabiliriz, ve onlar belirttiğimiz sırada çalıştırılacaklardır.
İfadeler hakkında daha fazla bilgi, "İşleçler ve İfadeler" Bölümü’nde bulunabilir, konsol ile çalışma "Konsol Giriş ve Çıkış" Bölümü’nde anlatılmıştır, sınıflar ve yöntemler "Sınıfları Tanımlamak" Bölümü’nde bulunabilir.

1.7.1.4 C# Büyük ve Küçük Harf Arasında Ayrım Yapar!
C# dili büyük ve küçük harfler arasında ayrım yapar, bu nedenle C# kodu yazarken doğru harfi kullanmalıyız. Yukarıdaki örnekte class, static, void gibi bazı anahtar sözcükleri ve System.Console gibi sistem sınıfları ve nesnelerinden bazılarının adlarını kullandık.




Yazarken dikkatli olun! Büyük harfle, küçük harfle veya her ikisinin bir karışımı ile yazılı aynı şey, C# için farklı şeyler anlamına gelir. Class ve class farklı olduğu gibi, System.Console ve SYSTEM.CONSOLE da farklıdır.


Bu kural programın tüm unsurları için geçerlidir: anahtar sözcükler, değişkenlerin adları, sınıf adları, vb. 

1.7.1.5 Program Kodu Doğru Biçimli Olmalıdır
Biçimlendirme boşluk, sekme ve yeni satır gibi, derleyici için önemsiz olan fakat koda mantıksal yapısını veren ve okunmasını kolaylaştıran karakterleri eklemektir. Örneğin ilk programımıza (Main() metotunun kısa versiyonu) bir göz atalım:


class HelloCSharp

{

static void Main()



{

System.Console.WriteLine("Merhaba C#!");

}

}



Program kodu yedi satır içeriyor ve bazıları diğerlerinden daha girintili yazılmıştır. Tüm bunlar sekme olmadan da yazılabilir, aşağıdaki gibi:


class HelloCSharp

{

static void Main()



{

System.Console.WriteLine("Merhaba C#!");

}

}



veya aynı satır üzerinde:


class HelloCSharp{static void Main(){System.Console.WriteLine( "Merhaba C#!");}}


ve hatta şöyle:


class

HelloCSharp

{

static void Main()



{ System .

Console.WriteLine("Merhaba C#!") ;} }




Yukarıdaki örnekler tam da biçimlendirilmiş kod gibi derlenir ve çalışır, ancak okunması ve anlaması daha zordur, ve bu nedenle zor değiştirmesi ve bakımı daha zordur.




Programlarınızın biçimlendirilmemiş kod içermesine asla izin vermeyin! Bu program okunabilirliğini ciddi olarak azaltır ve kodun sonraki değişiklikleri için zorluklara yol açar.



1.7.2 Başlıca Biçimlendirme Kuralları
Kodumuzu doğru biçimlendirmek istiyorsak, girintilerle ilgili bazı önemli kurallara uymalıyız:


  • Yöntemlere sınıf tanımının içinde girinti verilir (bir veya daha fazla [Tab] karakteri ile sağa doğru hareket ettiriniz);

  • Yöntem içeriğine yöntem tanımının içinde girinti verilir;

  • Açılış kıvırcık parantezi { kendi satırında olmalıdır ve belirttiği yöntem veya sınıfın tam altına yerleştirilmiş olmalıdır;

  • Kapanış kıvırcık parantezi } kendi satırında olmalıdır ve ilgili açılış parantezinin tam dikey olarak altına (aynı girinti ile) yerleştirilmiş olmalıdır;

  • Bütün sınıf adları büyük harfle başlamalıdır;

  • Değişken adları küçük harfle başlamalıdır;

  • Yöntem adları büyük harfle başlamalıdır.


Kod girintileri çok basit bir kuralı izler: bir kod parçası başka bir kod parçasının mantıksal olarak içerisinde olduğunda, tek bir [Tab] ile sağa (taşınır) girintili olur. Örneğin, bir yöntem, bir sınıfın içerisinde tanımlanmış ise, (sağa doğru hareketli) girintili olur. Aynı şekilde, bir yöntemin gövdesi bir başka yöntemin içerisindeyse de girinti verilir. Bunu basitleştirmek için, "{" karakterine her rastladığımızda kapanış "}" karakterine kadarki tüm kodun sağda girintili olacağını varsayabiliriz.

1.7.3 Dosya Adları Sınıf Adlarına Karşılık Gelir
Her C# programı bir veya birkaç sınıf tanımından oluşur. Her sınıfın tanımlı olduğu dosyanın sınıf adına karşılık gelen bir isimle ve .cs uzantısına sahip olacağı kabul edilir. Bu gereklerin yerine getirilmemesi halinde, program çalışmaya devam edecektir, ancak kodda gezinmek zor olacaktır. Örneğimizde, sınıf HelloCSharp olarak adlandırılmıştır ve sonuç olarak HelloCSharp.cs adlı bir dosyada kaynak kodu kaydetmek gerekir.
1.8 C# Dili ve .NET Platformu
C# ilk sürümü 1999 ve 2002 yılları arasında Microsoft tarafından geliştirildi ve resmen .NET platformunun bir parçası olarak 2002 yılında piyasaya çıkarıldı. .NET Platformu programlamaya yeni bir kalite yaklaşımı sağlayarak, "sanal makine" ve "yönetilen kod" kavramlarına dayalı olarak Windows için daha kolay yazılım geliştirme yapılmasını hedefliyor. O zamanlarda Java dili ve platformu yazılım geliştirmenin tüm alanlarında büyük başarı kazanmıştı; C# ve .NET Microsoft'un Java teknolojisine karşılık doğal tepkisi olmuştur.

1.8.1 C# Dili
C# modern, genel-amaçlı, nesne-yönelimli, yüksek-seviyeli bir programlama dilidir. Sözdizimi C ve C++ benzerdir, ancak bu dillerdeki birçok özellik programlamayı kolaylaştıracak şekilde dili sadeleştirmek amacıyla C# tarafından desteklenmez.
C# programları sınıfların ve diğer türlerin tanımlarını içeren .cs uzantılı bir yada birkaç dosyadan oluşur. Bu dosyalar C# derleyicisi (csc) tarafından çalıştırılabilir koda derlenir, ve bunun bir sonucu olarak aynı isimde ama farklı bir uzantıya (.exe veya .dll) sahip dosyalar içinde assembly oluşturulur. Örneğin HelloCSharp.cs derleyeceksek, HelloCSharp.exe adında bir dosya elde ederiz (bazı ek dosyalar da oluşturulur, ancak şu anda biz onları tartışmayacağız).
Derlenen kod bilgisayarımızda herhangi bir başka program gibi çalıştırabilir (üzerine çift tıklayarak). Derlenmiş C# kodu (örneğin HelloCSharp.exe) .NET Platformu’na sahip olmayan bir bilgisayarda çalıştırmaya çalışırsak, bir hata iletisi alırız.

1.8.1.1 Anahtar Sözcükler
Programlama yapılarını oluşturmak için C# şu anahtar sözcükleri kullanır (liste Mart 2013 tarihli MSDN’den alınmıştır ve tam olmayabilir):


abstract

as

base

Bool

break

byte

case

catch

char

checked

class

const

continue

decimal

default

delegate

do

double

else

enum

event

explicit

extern

false

finally

fixed

float

For

foreach

goto

if

implicit

in

Int

interface

internal

is

lock

long

namespace

new

null

object

operator

out

override

params

private

protected

public

readonly

ref

return

sbyte

sealed

short

sizeof

stackalloc

static

string

struct

switch

this

throw

true

try

typeof

uint

ulong

unchecked

unsafe

ushort

using

virtual

void

volatile

while






C# dilinin ilk versiyonunun yaratılmasından beri anahtar sözcüklerin hepsi kullanılmıyor. Bazıları sonraki sürümlerinde eklenmiştir. C# ana program elemanları arasında (anahtar sözcüklerin yardımı ile tanımlanan ve kullanılan) sınıflar, yöntemler, işleçler, ifadeler, şartlı ifadeler, döngüler, veri türleri, istisnai durumlar ve birkaç diğerleri vardır. Bu kitabın önümüzdeki birkaç bölümlerinde, yukarıdaki tabloda verilen anahtar sözcüklerin çoğunun kullanımı ile birlikte detaylı olarak tüm bu programlama yapılarını gözden geçireceğiz.

1.8.1.2 Otomatik Bellek Yönetimi
.NET Platformu’nun en büyük avantajlarından biri yerleşik otomatik bellek yönetimidir. Nesneler için elle bellek ayırmak ve daha sonra uygun bir zamanda belleği serbest bırakmak gibi karmaşık bir görevden programcıları korur. Bu önemli ölçüde geliştiricinin verimliliğini ve C# ile yazılmış programların kalitesini artırır.
.NET Platformu’nda, bellek yönetimi ile ilgilenmek üzere CLR özel bir bileşene sahiptir. Buna "çöp toplayıcı" (otomatik bellek temizleme sistemi) denir. Çöp toplayıcının başlıca şu görevleri vardır: değişkenler için ayrılan belleğin artık kullanılmayacağı zamanı kontrol etmek, o belleği serbest bırakmak ve yeni nesnelerin tahsisi için kullanılabilir hale getirmek.



Dikkat edilmesi gereken önemli bir nokta, bellekte kullanılmayan nesnelerin (örneğin yerel değişkenler) hangi anda temizlenmiş olacağı tam olarak belli değildir. C# dilinin özelliklerine göre, belirli bir değişken kapsam dışına alındıktan sonraki bir anda bu olur, ancak herhangi bir zaman sonra mı, yoksa mevcut bellek normal programın çalışması için yetersiz olduğunda mı olduğu belirtilmemiştir.



1.8.2 Ortamdan ve Programlama Dilinden Bağımsızlık
Farklı .NET dilleri kullanan programcılar kolayca kendi kodlarını değiş tokuş yapabilir. Örneğin C# programcısı başka bir programcı tarafından yazılmış VB.NET kodu, Managed C++ kodu veya F# kodu kullanabilir. Bunu mümkün kılan farklı .NET dillerinde yazılmış programların veri türleri, yürütme altyapıları ve derlenmiş kodlarının (assembly) ortak bir sistemi paylaşmasıdır.
.NET teknolojisinin büyük bir avantajı, farklı işletim sistemleri ve donanım aygıtları üzerinde, sadece bir kez yazılmış ve derlenmiş olan kodu çalıştırma yeteneğidir. Windows ortamında bir C# programını derledikten sonra onu Windows, Windows Mobile Windows RT veya Linux altında çalıştırabiliriz. Microsoft .NET Platformu’nu resmi olarak sadece Windows, Windows Mobile ve Windows Phone için destekliyor, ancak diğer işletim sistemleri üzerinde .NET uygulanmasını sunan üçüncü şahıslara ait sağlayıcılar da vardır.

1.8.2.1 Common Language Runtime (CLR) – .NET’in Kalbi
.NET Platformu kullanıma hazır C# dili, CLR ve birçok yardımcı araç ve kütüphaneleri içerir. .NET Platformu’nun merkezinde yönetilen kodun (MSIL kod) yürütmesini kontrol eden ortam – Common Language Runtime (CLR) vardır. Ortak Dil Çalışma Platformu olarak da adlandırılan CLR, .NET altyapısında programların çalışmasını kontrol eden ve işletim sistemi ile programın arasında yer alan arabirimdir. Normalde yazılan kodlar makine diline çevrilir ve işletim sistemi ile direkt bağlantı kurup çalışırdı. Eğer platformdan bağımsız bir ortam istiyorsak, ihtiyaç duyulan şey CLR olur, hangi platformda iseniz (Linux, Mac, Windows) CLR bu noktada devreye girer ve .NET programlarını farklı platformlarda işletim sistemine göre çalıştırır. Farklı donanım platformları ve işletim sistemlerinde .NET programlarının yürütülmesini sağlar.

1.8.2.2 .NET Framework’u Nasıl Edineceğim?
.NET Framework için uygulama geliştirmek istiyorsanız, işletim sisteminize .NET

çalıştırma ortamını kurmanız gerekiyor. NET Framework yüklemek için, Microsoft'un web sitesinden (http://download.microsoft.com) indirmeniz gerekir. Son sürümünü indirmek ve kurmak en iyisidir. Bu ortamı, Java uygulamalarını çalıştırmak için gerekli olan Java Runtime Environment (JRE) gibi düşünebilirsiniz. .NET Platformu iki ayrı kurulum dosyası halinde, ücretsiz sunuluyor.






Başlamadan önce .NET Framework yüklemeniz gerektiğini unutmayın! Aksi takdirde, programı derlemeniz ve çalıştırmanız mümkün olmayacaktır. Windows 8 veya Windows 7 çalıştırıyorsanız, .NET Framework zaten Windows'un bir parçası olarak kurulacaktır.



1.8.2.2.1 .NET'in Çekirdek Kurulumu (21MB)
Bu kurulum ile bilgisayarınızda bir metin editörü açıp kodunuzu yazabilir, gelen derleyiciler ile derleyip uygulamanızı sınayabilirsiniz. Metin editörü programın kaynak kodunu yazmak için ve bir dosyaya kaydetmek için kullanılır. Bundan sonra, kod derlenir ve çalıştırılır. Birçok metin düzenleme programları vardır. Kullanabileceğiniz Windows’un yerleşik Notepad (çok temel ve zahmetlidir) veya Notepad++ (notepad-plus.sourceforge. net) veya pspad (www.pspad.com) gibi daha iyi bir ücretsiz bir metin editörü. Ancak bu kurulum, geliştiriciler için değil, daha çok dağıtım sonrası uygulamanızın çalışacağı sistemler için uygundur. .NET uygulamaları için gerekli çalışma zamanı ortamını, web uygulamalarının sunulabilmesi için gerekli olan Web sunucu (IIS) eklentilerini ve desteklenen temel dillerin derleyicilerini sunmaktadır. Bir yazılım geliştiricinin bunlardan daha fazlasına ihtiyacı vardır. Hele de uygulama geliştireceği ortamda herhangi bir deneyimi yoksa. Bu nedenle ikinci bir seçenek sunuluyor.

1.8.2.2.2 .NET Framework SDK (134 MB)
SDK yani Software Development Kit, çekirdek kurulumu içeriğinden daha kapsamlı

bir kurulumdur. Peki, 134 MB’lik kurulumda fazladan neler var: Faydalı araçlar, hata

ayıklayıcılar, SQL Server’ın hafif versiyonu MSDE, hızlıca başlamanızı temin edecek

QuickStart Tutorials, örnek uygulamalar ve devasa dokümantasyon. Organizasyonu ve

disiplini ile göz kamaştıran bir dokümantasyon olduğunu kullanmaya başladıkça çok iyi

anlayacaksınız. Bu iki kurulumu da ücretsiz olarak Microsoft'un sitesinden indirebilirsiniz.



1.8.2.2.3 Hangi İşletim Sistemlerinde Çalışıyor?
Şu anda .NET Framework istemci uygulamaları Windows 98/Me/NT4/2000/XP/Server 2003 işletim sistemlerinde çalışabiliyor. Ancak sunucu davranışı için Windows 2000 (SP2 ve üstü), Windows XP veya Windows Server 2003 gerekiyor. Windows Server 2003’te .NET Framework kurulmuş oluyor zaten, ayrıca yüklemenize gerek yok. Bu işletim sistemleri dışında ASP.NET sayfalarını (yani .NET’in tarayıcıları ve mobil cihazları hedef alan web uygulamaları) sunamıyorsunuz. Elbette ki bu sunum, Internet Information Server (IIS) da gerektiriyor. Teoride .NET Framework herhangi bir işletim sistemine taşınabilir. Ancak taşınacağı işletim sistemine özgü çalışma zamanı ortamının ve sınıf kütüphanesinin yazılması gerekmektedir.

1.8.3 .NET Teknolojileri
.NET Framework uzantıları .NET programlarını geliştirirken yeniden kullanılabilir yazılım bileşenleridir. Kodun yeniden kullanılması yazılım geliştirmeyi önemli ölçüde kolaylaştırır, çünkü ortak sorunlara çözümler sağlar, karmaşık algoritmaların ve teknoloji standartlarının gerçekleştirimlerini sunar. Çağdaş programcı her gün kütüphaneleri ve bileşenleri kullanır ve bunu yaparak pek çok zahmete girmekten kurtulur.
Grafik ve diyagramlar şeklinde veriyi görselleştiren yazılım örneğine bakalım. .NET'te yazılmış, grafik çizen bir kütüphaneyi kullanabiliriz. Yapmamız gereken tek şey doğru veri ile giriş yapmaktır, kütüphane bizim için grafiği çizecektir. Bu çok uygun ve verimlidir. Ayrıca, üretim maliyetlerinin azalmasına yol açar, çünkü programcıların ek işlevler üzerinde çalışmaya zaman harcamaları gerekmez (örneğimizde, karmaşık matematiksel hesaplamaları ve grafik kartını kontrol etmeyi içeren çizim çizelgelerini çizmek). Uygulamanın kendisi daha yüksek kalitede olacaktır çünkü kullanılan uzantı bu özel alanda daha fazla deneyime sahip uzmanlar tarafından geliştirilmiş ve desteklenmiş olacaktır.
Yazılım teknolojileri yazılım geliştirme alanında bazı spesifik problemleri ele alan sınıflar, modüller, kütüphaneler, programlama modelleri, araçları, şablonlar ve en iyi uygulamalardan oluşur. Web teknolojileri, mobil teknolojiler, bilgisayar grafiği için teknolojiler ve .NET veya Java gibi bazı platformlar ile ilgili teknolojiler gibi genel yazılım teknolojileri mevcuttur.
.NET teknolojisi .NET sınıfları, kütüphaneler, araçlar, standartlar ve diğer programlama araçlarının bir topluluğudur ve belirli bir uygulama türünü yaratmak için gerekli olan teknolojik çerçeveyi belirleyen kurulu geliştirme modelleridir. .NET geliştirirken farklı alanlarda hizmet veren birçok .NET teknolojisi kullanabiliriz. Tipik örnekler şöyledir: Dinamik Web uygulamalarını hızlı ve kolay oluşturan Web teknolojileri (ASP.NET ve ASP.NET MVC gibi) ve Internet üzerinde çalışan zengin kullanıcı arayüzlü multimedya uygulamalarının kurulmasını mümkün kılan .NET mobil teknolojileridir (WinJS gibi). Bir başka örnek de ADO.NET ile verilebilir. İlişkisel veritabanlarına (Microsoft SQL Server ve MySQL gibi) erişim için standart bir yaklaşım sunan bir teknolojidir.
Microsoft dışındaki yazılım geliştiriciler tarafından geliştirilen bazı teknolojiler yaygın hale gelmiş ve sonuç olarak teknoloji standartları olmuşlardır. Bazıları Microsoft tarafından fark edilmiş ve daha sonra .NET Framework’un sonraki versiyonlarına eklenmiştir. Bu şekilde, .NET Platformu yeni kütüphaneler ve teknolojiler ile sürekli gelişmeye ve genişlemeye devam etmektedir.

1.8.3.1 The Base Class Library - Temel Sınıf Kütüphaneleri
.NET kütüphanesi kullanıma hazır, bazı işlevsellikleri sunan .NET sınıflarından oluşan bir topluluktur. .NET Framework’te programcıların işlerini kolaylaştırmak için birtakım hazır

kütüphaneler vardır, fakat C# dilinde hazır kütüphaneler mevcut değildir. Örneğin, System.Data.SqlClient sınıfları bir .NET kütüphanesini oluşturmaktadır. Bu sınıflar ADO.NET teknolojisi aracılığıyla bir SQL Server veritabanına bağlanmak için gerekli olan işlevselliği sağlar.


.NET Framework birçok teknoloji ve geliştiricilerin kullandığı standart işlevselliği sağlayan temel sınıf kütüphanelerini içermektedir. Bu kütüphanelere Base Class Library deniyor. Temel sınıf kütüphaneleri, uygulamalarınızı geliştirirken size lazım olabilecek birçok servisi ve nesneyi içinde barındıran bir sistemdir. Temel sınıf kütüphaneleri, namespaces (isim alanları) içinde organize edilmişlerdir. Örneğin, sistem kütüphanesinde matematiksel fonksiyonlar ile çalışan kullanıma hazır sınıflar vardır, logaritma hesaplanması ve trigonometrik fonksiyonlar (System.Math sınıfı) gibi. Başka bir örnek ağlar ile ilgili kütüphanedir (System.Net). Bu kütüphane e-posta göndermek için (System.Net.Mail.MailMessage sınıfını kullanarak) ve İnternet’ten dosya indirmek için (System.Net.WebClient kullanarak) kurulu bir işlevselliğe sahiptir.
Temel isim alanları ve sınıf kütüphaneleri şunlardır:

  • System isim alanı: .NET çalışırken gerekli temel sınıfları içerir. Ayrıca

diğer tüm sınıf kütüphaneleri de bunun içinde kümelenmiştir. System

hiyerarşinin tepesinde bulunur.



  • Örneğin tüm veritabanı işlemleri için kullanılacak sınıf kütüphanesi

System.Data” dır.

  • Bu sınıf kütüphanesi içindeki SQL ile işlemler için “System.Data.SqlClient

isim alanı mevcuttur.

  • System.Net : HTTP ve ağ protokolleri için kullanılır.

  • System.Xml : XML verileri ile çalışmak için kullanılır.

  • System.IO : Dosyalara bilgi girişi, dosyadan bilgi okuma, I/O işlemleri için

kullanılır.

  • System.Windows.Forms: Windows tabanlı uygulamalarda kullanılan zengin

grafik arabirimi kontrollerini içerir.

1.8.3.2 Uygulama Programlama Arayüzü (API)
.NET kütüphaneleri ve teknolojileri nesne oluşturarak ve üzerlerinde yöntem çağırarak kullanılır. Programlama kütüphanelerinde herkese ait sınıf ve yöntemlerin bir kümesi Uygulama Programlama Arayüzü veya sadece API olarak bilinir. Örnek olarak .NET API‘ye bakabiliriz, bu bir küme .NET sınıf kütüphanesidir, dilin yeteneklerini genişletir ve üst düzey işlevler ekler. .NET teknolojilerinin hepsi herkese ait (açık) API sunar. Teknolojiler genellikle sadece API olarak adlandırılır ve belirli işlevler ekler. Örneğin: dosyalar ile çalışan API, grafikler ile çalışan API, yazıcılar ile çalışan API, Word ve Excel belgelerini okumak ve oluşturmak için API, PDF belgeleri ile çalışan API, Web geliştirme için API, vb.

1.8.4 C# Programlarını Derleme ve Yürütme
Şimdi C# ile yazılmış basit örnek programımızı derleme ve çalıştırmanın zamanı geldi. Bunu başarmak için, biz aşağıdakileri yapmanız gerekir:


  • HelloCSharp.cs adında bir dosya oluşturun;

  • Dosyadaki örnek programı yazın;

  • Konsol tabanlı C# derleyicisini (csc.exe) kullanarak HelloCSharp.cs programını yürütülebilir bir dosya olan HelloCSharp.exe içine derleyin;

  • HelloCSharp.exe dosyasını çalıştırın.

Şimdi, bunu bilgisayarda yapalım!
Örnek programı Windows üzerinde yazmak ve çalıştırmak için gerekenlere ayrıntılı bir göz atacağız. İşte bizim ilk C# programımızın kodu:


HelloCSharp.cs

class HelloCSharp

{

static void Main()

{

System.Console.WriteLine("Merhaba C#!");

}

}



1.8.4.1 Windows Konsolunda C# Programları Oluşturma
Öncelikle Komut İstemi olarak bilinen Windows komut konsolunu başlatalım. Windows 7 için bunu Windows Gezgini başlangıç menüsünden yapabilirsiniz: Start -> Programs -> Accessories -> Command Prompt.
Yönetici olarak konsolu çalıştırmanız tavsiye edilir. (Komut İstemi simgesine sağ tıklayın ve "Yönetici olarak çalıştır" seçin). Bunu yapmazsanız kullanmak istediğiniz bazı işlemler kısıtlanmış olabilir.


Windows 8 için Win8 Başlangıç ​​Ekranından komut istemi simgesine sağ tıkladığınızda “Yönetici olarak çalıştır" komutuna doğrudan ulaşabilirsiniz:



Konsolu açtıktan sonra, üzerinde deneme yapacağımız bir dizin oluşturalım. Dizini oluşturmak için md komutunu kullanın ve cd komutuyla içine girin.

Dizin IntroCSharp olarak adlandırılacak ve C:\ dizininde bulunacak. Geçerli dizininizi değiştirerek C:\IntroCSharp yapın ve yerleşik Windows metin editörü – Notepad kullanarak yeni bir dosya HelloCSharp.cs oluşturun.
Metin dosyası "HelloCSharp.cs" oluşturmak için, konsolda aşağıdaki komutu çalıştırın:


notepad HelloCSharp.cs


Bu komut yeni bir dosya oluşturulması için onay isteyerek aşağıdaki iletişim penceresi ile Not Defteri'ni başlatacak:

Not Defteri böyle bir dosyanın var olmadığı konusunda bizi uyaracak ve bunu oluşturmak isteyip istemediğimizi bize soracaktır. [Evet] tıklayın. Bir sonraki adım, programın kaynak kodunu yeniden yazmak veya sadece Kopyala/Yapıştır ile elde etmektir.

[Ctrl+S] tuşuna basarak kaydedin ve [Alt+F4] ile Not Defteri editörünü kapatın. Şimdi C:\IntroCSharp\ HelloCSharp.cs dosyasında yazılmış örnek C# programımızın başlangıç ​​kodu bulunmaktadır.

1.8.4.2 Windows Üzerinde C# Programları Derleme
Yapmamız gereken kalan tek şey programı derlemek ve çalıştırmaktır. Derleme csc.exe derleyicisi tarafından yapılır.

İlk hatayı aldık – Windows adı "csc" ile yürütülebilir bir dosya veya komut bulamıyor. Bu çok yaygın bir problemdir ve ilk kez C# kullanıyorsanız görünmesi normaldir. Çeşitli nedenlerden dolayı meydana gelir:


  • .NET Framework yüklü değil;

  • .NET Framework doğru yüklenmiş, ancak Microsoft.NET\Framework\v4.0.xxx dizini çalıştırılabilir dosyalar için tanımlı olan sistem yoluna eklenmemiş ve Windows csc.exe bulamıyor.


İlk problem .NET Framework (bizim durumumuzda - 4.5 versiyonu) yükleyerek kolayca çözülür. Diğer problem sistem yolunu değiştirerek çözülebilecek (daha sonra yapacağız) veya aşağıda şekilde görüldüğü gibi, csc.exe için geçerli tam yolu kullanarak. Bizim durumumuzda, C # derleyicisi için tam dosya yolu C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe olmuştur (unutmayın ki bu yol yüklü .NET Framework sürümüne bağlı olarak değişebilir). Visual Studio 2012 ile gelen NET 4.5 ve C# 5 "v4.0.30319" adlı bir dizine yükleniyor.

1.8.4.3 Windows Üzerinde C# Programları Derleme ve Çalıştırma
Şimdi tam dosya yolunu vererek csc derleyiciyi çağıralım ve ona bir parametre (HelloCSharp.exe) olarak derlemek istediğiniz dosyayı geçelim.



csc yürütmesi hatasız tamamlandıktan sonra sonuç olarak aşağıdaki dosyayı elde edersiniz: C:\IntroCSharp\HelloCSharp.exe. Bunu çalıştırmak için, sadece adını yazmanız gerekir. Programın çalıştırılması sonucu "Merhaba, C#!" mesajı konsolda basılı görünür. Böylece iyi bir başlangıç yaptık:


1.8.4.4 Windows Üzerinde Sistemi Yollarını Değiştirme
Tam dosya yolunu girmeden komut satırı C# derleyicisini (csc.exe) kullanabilmek için, Windows sistem yoluna klasörü ekleyebilirsiniz.


        1. Denetim Masası'nı açın ve "Sistem" seçin. Sonuç olarak bu iyi-bilinen pencere (ekran görüntüsü, Windows 7'den alınmıştır) görüntülenir:



Windows 8 biraz farklı görünebilir, ama neredeyse aynıdır:



        1. "Gelişmiş Sistem Ayarları"nı seçin. "Sistem Özellikleri" penceresi görünür:





        1. "Ortam Değişkenleri" düğmesine tıklayın ve tüm ortam değişkenlerini içeren bir pencere görünür:




        1. Şekilde görüldüğü gibi, Sistem değişkenleri listesinden "Path" seçin ve "Düzenle" butonuna basın. .NET Framework yüklü olduğu dizinin yolunu gireceğiniz küçük bir pencere görünür:




Tabii ki, .NET Framework’un nerede yüklü olduğunu bulmak zorundayız. Varsayılan olarak, Windows sistem dizini C:\Windows\ Microsoft.NET

içinde bir yerde bulunur, örneğin:


C:\Windows\Microsoft.NET\Framework64\v4.0.30319


Zaten mevcut olan ortam değişkenlerine ek bir yol eklemek için ara olarak bir noktalı virgül (;) koyduktan sonra yol adını bitiştirerek yazarız.




Dikkatli olmalıyız çünkü herhangi bir mevcut sistem yolunu silerseniz, Windows işlevleri veya bazı yüklü yazılım parçaları düzgün çalışmayabilir!



        1. Yolu ayarladıktan sonra, csc.exe çalıştırmayı deneyebilirsiniz, tam yolunu girmeden. Bunu yapmak için, yeni bir cmd.exe (Komut İstemi) penceresi açın (Komut İstemi’ni yeniden başlatmak önemlidir) ve "csc" komutu yazın. C# derleyicisinin sürüm bilgileri ve hiçbir giriş dosyası belirtilmediğine dair bir mesaj görmeniz gerekir:



1.9 Visual Studio Tümleşik Geliştirme Ortamı (IDE)
Şimdiye kadar Windows konsol (Komut İstemi) kullanarak C# programlarının nasıl derleneceğini ve çalıştırılacağını inceledik. Tabii ki, bunu yapmanın daha kolay bir yolu var - şimdiye kadar kullanılan tüm komutları çalıştıran bir tümleşik geliştirme ortamını kullanarak. Geliştirme ortamları (IDE) ile nasıl çalışılacağına ve işimizi nasıl kolaylaştıracaklarına bir göz atalım.

1.9.1 Tümleşik Geliştirme Ortamları
Önceki örneklerde, tek bir dosyadan oluşan bir programın nasıl derleneceği ve çalıştırılacağı incelenmişti. Genellikle programlar birçok dosyadan oluşur, hatta bazen on binlerce. Tek bir dosyadaki programı metin editöründe yazmak, komut isteminden derlemek ve çalıştırmak kolaydır, ancak büyük bir proje için tüm bunları yapmanın çok karmaşık ve zaman alıcı bir çaba olabileceği kanıtlanmıştır. Karmaşıklığı azaltan, yazılım uygulamalarını yazmayı, derlemeyi ve yürütmeyi kolay kılan tek bir araç vardır – Tümleşik Geliştirme Ortamı (IDE) diye adlandırılır. Geliştirme ortamları genellikle ana geliştirme işlevlerine birçok eklemeler getirir, hata ayıklama, birim testi, genel hataları tespit etme, bir depoya erişim sağlama ve diğerleri gibi.

1   2   3   4   5   6   7   8   9   ...   31






    Ana sayfa


C# İle biLGİsayar programlama temelleri (C# Programlama Kitabı) Svetlin Nakov & Co

Indir 3.36 Mb.