Programlama 2
Programlama 2
Hafta-1
Öğr. Gör. Muhsin DOLU
C# Nedir?
Microsoft tarafından geliştirilen modern, nesne yönelimli (OOP) bir programlama dili.
.NET platformu üzerinde çalışır.
Güçlü ve güvenli bir dil (type-safe).
Farklı alanlarda kullanılır:
Web uygulamaları ([Link] Core)
Mobil uygulamalar (MAUI, Xamarin)
Oyun geliştirme (Unity)
Masaüstü uygulamaları (WPF, WinForms)
.NET Platformu
.NET, C#, F#, [Link] gibi dillerin çalışmasını sağlayan bir ekosistemdir.
CLR (Common Language Runtime)
C# kodlarını çalıştıran ortak çalışma ortamıdır.
İşlevleri:
Bellek yönetimi (Garbage Collector)
Exception handling (Hata yönetimi)
Güvenlik
Çoklu dil desteği (C#, F#, [Link] vb.)
Örnek:
C# kodunu yazarsın → Derleyici IL (Intermediate Language) koduna
çevirir → CLR çalıştırır.
C#'ın Genel Özellikleri
Özellik Açıklama
OOP Desteği Nesne yönelimli yapı
Tip Güvenliği Hataların erken fark edilmesi
Garbage Collector Bellek temizliği otomatik
Platform Bağımsız Windows, Linux, Mac desteği
Modern Sözdizimi Temiz ve anlaşılır kod yapısı
Veri Tipi Nedir?
Bellekte veri saklamak için kullanılan, belirli bir türdeki veriyi temsil
eden yapı.
Örnek:
"Öğrencinin yaşı bir tam sayıdır (int), adı bir metindir (string)."
Veri tipi, programın:
Bellek kullanımını
Hızını
Hataları önceden yakalamasını sağlar.
Veri Tipi Kategorileri
switch (sayi)
case 1:
[Link]("Bir");
break;
case 2:
[Link]("İki");
break;
case 3:
[Link]("Üç");
break;
default:
break;
}
Döngü Nedir?
Çalışma Mantığı:
Başlangıç (int i = 1)
Koşul (i <= 5)
Artırma (i++)
Döngüler- While Döngüsü
int sayi = 0;
while (sayi < 5)
{
[Link]("Sayı: " + sayi);
sayi++;
}
Koşul başta kontrol edilir, eğer koşul sağlanmazsa döngü hiç çalışmaz.
Döngüler- do-while Döngüsü
int sayi = 0;
do
{
[Link]("Sayı: " + sayi);
sayi++;
} while (sayi < 5);
Döngü en az bir kez çalışır, sonra koşulu kontrol eder.
Döngüler- foreach Döngüsü
Çalışma Soruları
1.1’den 50’ye kadar çift sayıları ekrana yazdır.
[Link]ıcıdan alınan bir sayının faktöriyelini hesapla.
[Link] 5 ismi foreach ile ekrana yazdır.
[Link] bir sayının asal olup olmadığını kontrol et.
Programlama II
Hafta-2
Öğr. Gör. Muhsin DOLU
DİZİLER (ARRAYS)
Aynı veri tipine sahip birden fazla veriyi tek bir isim altında saklayan
yapıdır.
Özellikleri:
Bellekte ardışık alanlarda tutulur.
Elemanlara index (0,1,2...) ile ulaşılır.
Sabit boyutludur (oluşturulduktan sonra boyutu değişmez).
void Selamla()
{
[Link]("Merhaba!");
}
// Çağırma
Selamla();
Parametre Alan Metot
// Çağırma
Selamla("Ali");
Geri Değer Döndüren Metot
Örnek:
Araba sınıfı → Plan
BMW, Mercedes → Gerçek arabalar
Sınıf Tanımlama ve Nesne Oluşturma
// Nesne oluşturma
class Araba
Araba benimArabam = new Araba();
{ [Link] = "Toyota";
public string Marka; [Link] = "Corolla";
public string Model; benimArabam.Hız = 0;
public int Hız; [Link]([Link] + " " +
[Link]);
public void Calistir()
[Link]();
{
[Link]("Araba çalıştı.");
}
}
Getter ve Setter Nedir?
Getter: Özelliğin değerini okumak için kullanılır.
Setter: Özelliğe değer atamak için kullanılır.
Kapsülleme (Encapsulation) sağlar → Güvenlik ve kontrol için önemlidir.
class Ogrenci
{
private string isim;
public string Isim
{
get { return isim; } // Getter
set { isim = value; } // Setter
}
}
// Nesne oluşturma
Ogrenci ogr = new Ogrenci();
[Link] = "Ahmet"; // Setter
[Link]([Link]); // Getter
Kullanım Alanı
Çalışma Soruları
1. 10 elemanlı bir dizi tanımlayın, kullanıcıdan değer alıp diziyi doldurun ve
ortalamasını hesaplayın.
2. Parametre olarak iki sayı alan ve büyük olanı döndüren bir metot yazın.
3. Kitap sınıfı oluşturun: Özellikler → Ad, Yazar, Fiyat. Getter ve setter
kullanarak bilgileri ekrana yazdırın.
4. Hesap sınıfı yazın. Para yatırma ve çekme işlemleri için metot ekleyin.
Programlama II
Hafta-3
Öğr. Gör. Muhsin DOLU
Dizi (Array) Nedir?
Aynı tipteki verileri, tek bir değişken adı altında saklamamızı sağlayan
yapılardır.
Önemli: Dizi indeksleri 0'dan başlar! Yani ilk elemanın indeksi 0'dır.
Dizi Örneği
Tek Boyutlu Dizilere Erişim ve Döngü
Kullanımı
Dizinin belirli bir indeksindeki elemana ulaşmak için diziAdi[indeks]
yazılır.
Belirli bir işi yapan kod bloğunu, tekrar tekrar yazmamak için bir isim
altında toplamaktır.
"Yazdır", "Topla", "Sırala" gibi işlemler birer metot olabilir.
Çalışma Soruları
1. Bir dizinin ortalamasını ve en büyük elemanını bulan iki ayrı metot
yazınız.
2. Bir diziyi ters çevirip yeni bir dizi olarak döndüren metot yazınız.
3.10 öğrencinin vize ve final notlarını tutan iki boyutlu dizi oluşturun.
Her öğrenci için geçme notunu hesaplayıp ekrana yazdırın.
4. İki matrisi çarpan metot yazınız.
Programlama II
Hafta-4
Öğr. Gör. Muhsin DOLU
C# Nesne Yönelimli Programlama
(OOP)
OOP Nedir?
• Nesne Yönelimli Programlama (Object Oriented Programming),
yazılımı nesneler etrafında organize etme yaklaşımıdır.
• Kodun daha modüler, bakımı kolay ve yeniden kullanılabilir olmasını
sağlar.
Temel Kavramlar
• Class (Sınıf): Nesnelerin şablonudur. Özellikler (fields/properties) ve
davranışlar (methods) tanımlar.
• Object (Nesne): Sınıflardan türetilmiş, bellekte yer kaplayan somut
örneklerdir.
• Property: Nesnelerin özelliklerini tutar.
• Method: Nesnelerin yapabildiği işlemleri tanımlar.
OOP’nin 4 Temel Prensibi
• Encapsulation (Kapsülleme): Verilerin gizlenmesi, kontrollü erişim
sağlanması.
• Inheritance (Kalıtım): Bir sınıfın başka bir sınıftan özellik ve
davranışları devralması.
• Polymorphism (Çok Biçimlilik): Aynı isimli metodun farklı şekillerde
davranabilmesi.
• Abstraction (Soyutlama): Gereksiz detayları gizleyerek sadece gerekli
özelliklerin gösterilmesi.
Encapsulation (Kapsülleme)
Verileri (özellikleri) dışarıdan koruyarak sadece belirli yöntemlerle
erişilmesini sağlar.
Encapsulation (Kapsülleme) Örneği
Inheritance (Kalıtım)
Bir sınıfın başka bir sınıftan özellik ve davranışları miras almasıdır.
Inheritance (Kalıtım) Örneği
Polymorphism (Çok Biçimlilik)
Aynı isimli metotların farklı şekillerde çalışabilmesidir. (Overriding / Overloading)
Polymorphism (Çok Biçimlilik) Örneği
Abstraction (Soyutlama)
Gereksiz detayları gizleyip sadece gerekli özellik ve davranışları sunmaktır.
Abstraction (Soyutlama) Örneği
Örnek Sorular
Çalışma Soruları:
1. Encapsulation (Kapsülleme)
Bir öğrenci sınıfı tasarlayın. Öğrencinin not bilgisi dışarıdan doğrudan değiştirilemesin, sadece belirli bir
metot ile güncellenebilsin.
2. Inheritance (Kalıtım)
Bir Taşıt sınıfı düşünün. Bu sınıftan türeyen Araba ve Otobüs sınıflarını oluşturun. Her sınıfın kendine özgü
bir özelliği olsun.
3. Polymorphism (Çok Biçimlilik)
Bir Hayvan sınıfı oluşturun. Bu sınıfı miras alan Kedi ve Köpek sınıfları kendi seslerini çıkarsın. (Miyav /
Hav)
4. Abstraction (Soyutlama)
Bir Şekil adında soyut sınıf (abstract class) tasarlayın. Bu sınıftan türeyen Daire ve Kare sınıfları kendilerine
özel şekilde çizim yapsın.
Programlama II
Hafta-5
Öğr. Gör. Muhsin DOLU
OOP’nin Temelleri
Kullanım alanları:
Alan ve parametre çakışmalarında ayrım yapmak.
Aynı sınıf içindeki metotları çağırmak.
Method chaining (zincirleme çağrı) yapmak.
this Anahtar Kelimesi Örneği
Sınıf Örneği – Araba Sınıfı
Sınıf Örneği – Kitap Sınıfı
Sınıf Örneği – Öğrenci Sınıfı
Sınıf Örneği – Banka Hesabı Sınıfı
Programlama II
Hafta-6
Öğr. Gör. Muhsin DOLU
[Link] Core Nedir?
[Link] Core, Microsoft tarafından geliştirilen açık kaynaklı, platformlar arası
çalışabilen, yüksek performanslı bir web framework'üdür. Modern bulut tabanlı
uygulamalar, IoT uygulamaları ve mobil backend'ler oluşturmak için
tasarlanmıştır.
Temel Özellikleri:
Platformlar arası: Windows, macOS ve Linux'ta çalışabilir
Açık kaynak: Topluluk katkılarına açık
Yüksek performans: Diğer popüler web framework'lerine göre daha hızlı
Modüler yapı: İhtiyaca göre sadece gerekli bileşenler eklenebilir
Modern: Microservice mimarisi, Docker, cloud-native uygulamalar için ideal
[Link] Core ile [Link] Farkı
Özellik [Link] [Link] Core
Çapraz platform (Windows,
Platform Sadece Windows
macOS, Linux)
Mimari Monolitik Modüler (Middleware tabanlı)
Performans Göreceli olarak daha yavaş Daha yüksek performans
Açık Kaynak Hayır Evet
Versiyonlama .NET Framework ile birlikte Bağımsız versiyonlama
Yayın Modeli Tek parça Modüler NuGet paketleri
[Link] Core Avantajları
Not: Daha hafif bir sürüm olan Visual Studio Code kullanabilirsiniz.
Visual Studio kullanarak ilk MVC
projesi
1 2
3 4
Hello World Mesajı Ekleme
@{
ViewData["Title"] = "Home
Page";
}
<h1>@ViewData["Message"]</h1>
<p>Bu benim ilk MVC projem!</p>
Hello World Mesajı Ekleme
[Link] Core MVC Klasör Yapısı
[Link] Core MVC projelerinde klasör yapısını anlamak, proje geliştirme
sürecinin temel taşıdır.
MVC yapısı, projeyi Model-View-Controller mantığına göre düzenleyerek:
• Kodun daha düzenli, okunabilir ve bakımı kolay olmasını sağlar.
• Geliştiriciler arasında iş bölümü yapmayı kolaylaştırır.
• Hataları bulmayı ve çözmeyi hızlandırır.
• Projenin büyümesi ve yeni özellik eklenmesi durumunda karmaşayı
önler.
Visual Studio, yeni bir MVC projesi oluşturduğunda bu klasör yapısını
otomatik olarak hazırlar, böylece geliştiriciler projeye direkt olarak sağlam
bir temel üzerinde başlayabilir.
Not:
Düzenli bir klasör yapısı, küçük projelerde basitlik, büyük projelerde ise
sürdürülebilirlik demektir.
Controllers (Kontrol Katmanı)
Not:
Yeni bir tablo eklemek istersen, her tablo için bir Model sınıfı oluşturmalısın.
Views (Görsel Katman)
• Kullanıcıya gösterilecek olan HTML sayfalarını içerir.
• Her Controller için bir alt klasör bulunur.
• Action isimleri ile aynı isimde .cshtml dosyaları olmalıdır.
• Ayrıca Shared klasöründe ortak kullanılan tasarım dosyaları bulunur.
1. [Link] & [Link]
• HomeController içindeki Index() ve Privacy() action'larına karşılık gelen sayfalar.
2. _Layout.cshtml
• Tüm sayfalarda ortak kullanılan şablon dosyasıdır.
• Menü, footer, genel tasarım burada bulunur.
• İçeriğin gözükeceği yer:
@RenderBody()
3. [Link]
• Hata sayfalarını göstermek için kullanılır.
wwwroot (Statik Dosyalar)
Not:
Bu klasör içindeki dosyalara direkt URL üzerinden erişilebilir.
Örneğin: /css/[Link]
[Link] (Ayar Dosyaları)
Not:
Varsayılan açılış sayfası: HomeController → Index
[Link] (Çalıştırma Ayarları)