Merhaba değerli Webkolog.net takipçileri, bugün sizlerle yazılım geliştirme dünyasına heyecan verici bir adım atacağız: Microsoft'un güçlü ve yaygın olarak kullanılan geliştirme platformu olan .NET Framework 4 ve bu platformun gözde dili C#. Özellikle IDE olarak Visual Studio 2010'u ele alarak, bu dünyaya ilk kez adım atacaklar için temel kavramları ve önemli bilgileri anlaşılır bir dilde aktarmaya çalışacağım.
C# dünyasına girerken bilmemiz gereken ilk şey, bu dilin küçük-büyük harf duyarlı olduğudur. Yani sayi ve Sayi program için farklı anlamlar ifade eder. Bu detaya dikkat etmek, ilerleyen süreçte karşılaşılabilecek olası hataların önüne geçmek açısından önemlidir.
Projemizin Kalbi:
Program.cs ve Program Sınıfı
Visual Studio 2010'da yeni bir C# projesi oluşturduğumuzda, otomatik olarak Program.cs adında bir dosya karşımıza çıkar. Bu dosya, projemizin ilk başladığı ve ana yürütme mantığını içeren Program adında bir sınıfı barındırır. Bu sınıfın içinde yer alan Main metodu ise uygulamamızın başlangıç noktasıdır. Programımız çalışmaya başladığında ilk olarak bu Main metodu içerisindeki kodlar yürütülür.
// Program.cs içeriği (örnek)
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine("Merhaba .NET Dünyası!");
}
}
Temel Teknik Terimler
Yazılım geliştirme sürecinde sıkça karşımıza çıkan ve
anlamlarını bilmemizin önemli olduğu bazı teknik terimler bulunmaktadır:
- Instance Almak: Bir sınıftan yeni
bir nesne (object) oluşturma işlemidir. Sınıf, nesnelerin genel bir
şablonu iken, instance o şablona göre bellekte oluşturulmuş somut bir
örnektir.
- Implicitly (Dolaylı) Çevirme: Bir veri
tipinin, herhangi bir özel işlem yapmadan otomatik olarak daha geniş
kapsamlı bir veri tipine dönüştürülmesidir. Örneğin, daha küçük bir bellek
alanına sahip olan byte türündeki bir değer, daha büyük bir bellek alanına
sahip olan int türüne doğrudan atanabilir. Buna örtülü dönüştürme
de denir.
- Explicitly (Açık) Çevirme (Casting): Bir veri tipinin, programcı tarafından belirtilerek başka bir veri tipine dönüştürülmesidir. Bu işlem genellikle veri kaybı riskini içerdiğinden bilinçli olarak yapılmalıdır. Parantez içinde hedef veri tipi belirtilerek gerçekleştirilir. Buna tür dönüştürme de denir.
double pi = 3.14;
int tamPi = (int)pi; // Açık çevirme (casting)
/*
Convert: Farklı veri tipleri arasında dönüşüm yapmak için kullanılan bir sınıftır (System.Convert).
Bu sınıf, çeşitli To...() metotları aracılığıyla güvenli ve kontrollü dönüşümler sağlar.
*/
string sayiStr = "123";
int sayiInt = System.Convert.ToInt32(sayiStr); // Convert sınıfı ile çevirme
- CLR (Common Language Runtime): .NET
Framework'ün temelini oluşturan bir ara katmandır. Java'daki JRE'ye benzer
bir rol üstlenir. CLR, .NET uygulamalarının çalıştırılmasını yönetir,
bellek yönetimi (garbage collection), güvenlik ve tip denetimi gibi
hizmetleri sağlar.
- CIL (Common Intermediate Language): .NET
dilleri (C#, VB.NET vb.) tarafından derlendikten sonra oluşan ara koddur.
MSIL (Microsoft Intermediate Language) olarak da bilinir. Bu ara kod,
platformdan bağımsızdır.
- JIT (Just In Time): CLR'nin bir parçası
olan ve CIL kodunu uygulamanın çalıştığı sırada makine koduna (işlemcinin
anlayacağı dile) çeviren derleyicidir. Bu sayede .NET uygulamaları farklı
platformlarda (uygun bir CLR implementasyonu varsa) çalışabilir.
- IDE (Integrated Development Environment): Yazılım geliştirmeyi kolaylaştıran, kod düzenleme, derleme, hata
ayıklama gibi araçları tek bir ortamda sunan entegre geliştirme ortamıdır.
Visual Studio 2010 da güçlü bir IDE örneğidir.
- SDK (Software Development Kit): Belirli bir
platform veya teknoloji için yazılım geliştirmek için gerekli araçları,
kütüphaneleri, belgeleri ve örnek kodları içeren geliştirme kitidir. .NET
Framework SDK da .NET uygulamaları geliştirmek için gereken her şeyi
içerir.
Bir C# Uygulamasının
Çalışma Süreci
Bir C# uygulaması yazdıktan sonra, bu kodun çalışabilir
hale gelmesi için belirli adımlardan geçer:
- Kaynak Kod: Yazdığımız C#
kodlarıdır (.cs uzantılı dosyalar).
- .NET Derleyici: C# derleyicisi
(csc.exe), kaynak kodunu derleyerek MSIL (CIL) adı verilen ara koda
ve meta verilere (meta data) çevirir. Bu çıktı genellikle bir DLL (dinamik
bağlantı kitaplığı) veya EXE (çalıştırılabilir dosya) olarak kaydedilir.
- Common Language Runtime (CLR) ve Just in Time (JIT): Uygulama çalıştırıldığında, CLR devreye girer ve MSIL kodunu,
uygulamanın çalıştığı makinenin işlemcisine uygun yerel makine koduna
JIT derleyicisi aracılığıyla çevirir.
- Çıktı: Makine kodu çalıştırılarak uygulamanın istenen işlevi yerine getirilir.
.NET'te Geliştirilebilen
Diller ve Platformlar
.NET Framework, birden fazla programlama dilini destekler. En popüler olanları arasında C#, VB.NET, Managed C++, Delphi.Net ve geçmişte J# yer alır.
Ayrıca, .NET ekosistemi farklı platformları hedefleyen
çeşitli çatılara sahiptir:
- Mono: Linux, iOS ve Android gibi platformları
hedefleyen açık kaynaklı bir .NET implementasyonudur. Mono sayesinde .NET
uygulamaları farklı işletim sistemlerinde çalıştırılabilir.
- .NET Core: Linux ve macOS gibi
platformlarda da çalışabilen, modern ve platformlar arası bir .NET
sürümüdür (Visual Studio 2017 ve sonrası ile daha yaygın hale gelmiştir).
Ancak, .NET Framework 4'te ASP.NET Core veya Xamarin desteği
bulunmamaktadır.
- ASP.NET Core: Web uygulamaları ve
servisleri geliştirmek için kullanılan, platformlar arası bir çatıdır. WPF
(Windows Presentation Foundation) gibi masaüstü teknolojilerini
desteklemez.
- Xamarin: Mobil uygulamalar geliştirmek için kullanılan bir .NET çatısıdır. Android ve iOS platformları için native uygulamalar geliştirmeye olanak tanır.
Karşılaşılabilecek Hata
Türleri
Yazılım geliştirme sürecinde çeşitli hatalarla
karşılaşmak kaçınılmazdır. Temel olarak üç tür hata bulunur:
- Syntax Hataları: Kodun dilin
kurallarına (söz dizimine) aykırı yazılmasından kaynaklanır. Derleme
aşamasında tespit edilirler.
- Mantıksal Hatalar: Kodun söz dizimi
doğru olsa bile, programın istenen işlevi yanlış bir şekilde yerine
getirmesine neden olan hatalardır. Çalışma zamanında fark edilebilirler.
- Runtime Hataları (Çalışma Zamanı Hataları): Program çalışırken ortaya çıkan hatalardır. Örneğin, sıfıra bölme (DivideByZeroException), yanlış formatta bir veri dönüştürme (FormatException), veya bir sayısal değerin izin verilen aralığın dışına çıkması (OverflowException) gibi durumlar bu tür hatalara yol açabilir.
Namespace, Class ve
Method Kavramları
C# kodunun temel yapı taşları namespace (isim alanı), class (sınıf) ve method (metot) kavramlarıdır. Namespace'ler, kodun düzenlenmesini ve isim çakışmalarının önlenmesini sağlar. Sınıflar, nesnelerin şablonlarıdır ve veri (alanlar/değişkenler) ile davranışları (metotlar/fonksiyonlar) bir arada tutar. Metotlar ise belirli bir işlevi gerçekleştiren kod bloklarıdır.
return ve throw İfadeleri
- return: Bulunduğu metotun
yürütülmesini o noktada durdurur ve eğer metot bir değer döndürmesi
gerekiyorsa, bu değeri çağrıldığı yere iletir.
- throw: Bir hata (exception) durumunu işaretlemek ve programın normal akışını bozarak hata işleme mekanizmasına geçmesini sağlamak için kullanılır.
Object Veri Tipi ve
Boxing/Unboxing
object veri tipi, C#'taki tüm diğer veri tiplerinin temel sınıfıdır. Bu nedenle, herhangi bir türdeki değer bir object türündeki değişkene atanabilir. Değer tipindeki bir verinin object türüne dönüştürülmesine boxing (kutulama), object türündeki bir verinin tekrar kendi orijinal değer tipine dönüştürülmesine ise unboxing (kutudan çıkarma) denir. Boxing ve unboxing işlemleri performans açısından maliyetli olabileceği için dikkatli kullanılmalıdır.
Evet sevgili Webkolog.net okurları, C# .NET Framework 4 dünyasına yaptığımız bu ilk adımda, temel kavramları ve teknik terimleri Visual Studio 2010 özelinde ele almaya çalıştım. Umarım bu giriş yazısı, bu heyecan verici platforma olan ilginizi artırmış ve size yol göstermiştir. Bir sonraki yazımızda, C#'ta operatörlere değineceğineceğiz.
Webkolog'u takipte kalın!
Hepinize bol kodlu ve keyifli öğrenme süreçleri
dilerim!
0 yorum:
Yorum Gönder