0% found this document useful (0 votes)
50 views127 pages

Programlama 2

Uploaded by

Aasaasa Asdassa
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views127 pages

Programlama 2

Uploaded by

Aasaasa Asdassa
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Programlama II

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

C# veri tipleri 3 ana gruba ayrılır:


 Değer Tipleri (Value Types)
 Verinin kendisini saklar.
 Bellekte stack alanında tutulur.
 Örnek: int, double, bool, char
 Referans Tipleri (Reference Types)
 Verinin adresini saklar.
 Bellekte heap alanında tutulur.
 Örnek: string, class, array
 Nullable Tipler
 null değer alabilen tipler.
 Örnek: int? yas = null;
Temel Değer Tipleri
Veri Tipi Açıklama Örnek
Tam sayılar (-2.1 milyar ila
int int yas = 25;
+2.1 milyar)
Ondalıklı sayılar (16 basamak
double double fiyat = 19.99;
hassasiyet)
Ondalıklı sayılar (7 basamak
float float oran = 0.85f;
hassasiyet)
Finansal hesaplamalar için
decimal decimal maas = 10000.50m;
yüksek hassasiyet
bool Mantıksal değer (True/False) bool aktif = true;
char Tek karakter saklar char cinsiyet = 'E';
int ve double Örnekleri

int sayi1 = 10;


int sayi2 = 20;
int toplam = sayi1 + sayi2;
[Link]("Toplam: " + toplam); // Çıktı: 30

double fiyat = 19.99;


double kdv = fiyat * 0.18;
[Link]("KDV: " + kdv); // Çıktı: 3.5982
float ve decimal Örnekleri

Not: Finansal hesaplamalarda decimal tercih edilir.


float oran = 0.75f;
[Link]("Oran: " + oran); // Çıktı: 0.75

decimal maas = 12000.75m;


decimal zam = 500.25m;
decimal yeniMaas = maas + zam;
[Link]("Yeni Maaş: " + yeniMaas); // Çıktı: 12501.00
bool (Mantıksal Tip) Örneği
bool aktif = true;
bool kayitTamamlandi = false;
if (aktif)
{
[Link]("Kullanıcı aktif.");
}
else
{
[Link]("Kullanıcı pasif.");
}
char ve string
Tip Açıklama Örnek
char Tek karakter saklar char harf = 'A';
string Metin saklar string sehir = “Ankara";

char cinsiyet = 'E';


[Link]("Cinsiyet: " + cinsiyet);

string sehir = “Ankara";


[Link](“Şehir: " + sehir);
string Metotları

C# string veri tipiyle birlikte birçok hazır metot sunar:

string metin = "Merhaba Dünya";


[Link]([Link]()); // MERHABA DÜNYA
[Link]([Link]()); // merhaba dünya
[Link]([Link]); // 13
[Link]([Link]("Dünya")); // True
var ve dynamic Kullanımı

Tip Açıklama Örnek


var Türü derleyici otomatik belirler. var sayi = 10;
dynamic Tür çalışma anında belirlenir. dynamic veri = "Merhaba";

var isim = "Ahmet"; // string


var yas = 25; // int

dynamic veri = 10;


[Link](veri); // 10

veri = "Merhaba"; // Tip değişti


[Link](veri); // Merhaba
Nullable Tipler

Normal int değişken null olamaz.


“int?” kullanarak null değeri saklayabiliriz.
int? yas = null;
if ([Link])
{
[Link]("Yaş: " + [Link]);
}
else
{
[Link]("Yaş girilmedi.");
}
Tip Dönüşümleri (Type Casting)
Tür Açıklama Örnek
Implicit (Otomatik) Küçük tip → Büyük tipe int x = 10; double y = x;
Explicit (Zorunlu) Büyük tip → Küçük tipe double x = 10.5; int y = (int)x;
Parse / Convert String → Sayı int sayi = [Link]("123");

string giris = "45";

int sayi = Convert.ToInt32(giris);


[Link]("Sayı: " + sayi);
Operatör Nedir?

Operatörler, programlama dillerinde veriler üzerinde işlem yapmak için


kullanılan sembollerdir.
C#’ta yaygın kullanılan operatörler:
 Aritmetik Operatörler → Matematiksel işlemler
 Karşılaştırma Operatörleri → Koşul kontrolü
 Mantıksal Operatörler → AND, OR, NOT
 Atama Operatörleri → Değer atama ve güncelleme
 Artırma/Azaltma Operatörleri
Yaygın Kullanılan Operatörler
Operatör Açıklama
Toplama (İki sayıyı toplar, iki
+
string'i birleştirir)
- Çıkarma (İki sayıyı çıkarır)
* Çarpma (İki sayıyı çarpar)
/ Bölme (İki sayıyı böler)
% Modül (Bölümün kalanı)
++ Artırma (Değeri 1 artırır)
-- Azaltma (Değeri 1 azaltır)
Koşul Yapıları- if/else mantığı
if (koşul)
int not = 75;
{
if (not >= 50)
// Koşul doğruysa burası çalışır {
} [Link]("Geçtiniz!");
else }
else
{ {
// Koşul yanlışsa burası çalışır [Link]("Kaldınız!");
} }
Koşul Yapıları- Switch-Case Mantığı
[Link]("Bir sayı giriniz: ");

int sayi = Convert.ToInt32([Link]());

switch (sayi)

case 1:

[Link]("Bir");

break;

case 2:

[Link]("İki");

break;

case 3:

[Link]("Üç");

break;

default:

[Link]("Farklı bir sayı girdiniz");

break;

}
Döngü Nedir?

Bir işlemi tekrar tekrar yapmak için kullanılan yapılardır.

Döngü Türü Kullanım Alanı


for Belirli sayıda tekrar
while Koşul doğru olduğu sürece tekrar
Koşul yanlış olsa bile en az bir kez
do-while
çalışır
foreach Dizi ve koleksiyon elemanları için
Döngüler- For Döngüsü
for (int i = 1; i <= 5; i++)
{
[Link]("Merhaba " + i);
}

Ç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ü

string[] isimler = { "Ali", "Veli", "Ayşe" };


foreach (string isim in isimler)
{
[Link](isim);
}
Örnek Sorular

Ç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).

Gerçek Hayat Örneği:


Bir sınıftaki 30 öğrencinin notlarını 30 farklı değişkende saklamak
yerine tek bir dizi kullanabiliriz.
Dizi Tanımlama ve Kullanımı

int[] sayilar = new int[5]; // 5 elemanlı bir int dizisi


sayilar[0] = 10;
sayilar[1] = 20;
sayilar[2] = 30;
[Link](sayilar[1]); // 20
Dizi Tanımlarken Başlangıç Değeri
Verme
string[] isimler = { "Ali", "Ayşe", "Veli" };
[Link](isimler[0]); // Ali
[Link](isimler[2]); // Veli
Diziyi Döngü ile Gezmek
int[] sayilar = { 10, 20, 30, 40, 50 };
// for döngüsü ile
for (int i = 0; i < [Link]; i++)
{
[Link]($"Index {i} -> {sayilar[i]}");
}
// foreach döngüsü ile
foreach (int sayi in sayilar)
{
[Link](sayi);
}
Dizi Kullanım Alanı
Öğrenci notları tutma
Haftalık sıcaklık verilerini saklama
En çok ziyaret edilen sayfaların kaydedilmesi
Satış verilerinin analiz edilmesi

int[] notlar = { 60, 75, 80, 90, 55 };


int toplam = 0;
foreach (int not in notlar)
{
toplam += not;
}
double ortalama = (double)toplam / [Link];
[Link]("Ortalama: " + ortalama);
METOTLAR (METHODS)

Belirli bir işlemi gerçekleştirmek için tekrar tekrar kullanılabilen kod


bloklarıdır.
Avantajları:
 Kod tekrarını önler.
 Kodun okunabilirliğini artırır.
 Bakım ve geliştirme kolaylığı sağlar.

Gerçek Hayat Örneği:


Market kasasında "indirim hesaplama" işlemi bir metot haline getirilirse,
tekrar tekrar çağrılabilir.
Metot Tanımlama

[erişim_belirteci] [geri_dönüş_tipi] MetotAdi([parametreler])


{
// Kodlar
}
 void → Geri dönüş değeri yok
 int, string, bool vb. → Geri dönüş tipi olan metotlar
Geri Dönüşsüz Metot (void)

void Selamla()
{
[Link]("Merhaba!");
}

// Çağırma
Selamla();
Parametre Alan Metot

void Selamla(string isim)


{
[Link]($"Merhaba {isim}");
}

// Çağırma
Selamla("Ali");
Geri Değer Döndüren Metot

int Topla(int a, int b)


{
return a + b;
}

int sonuc = Topla(5, 10);


[Link]("Toplam: " + sonuc);
Kullanım Alanı

Hesaplama işlemleri (toplama, çıkarma, vergi hesaplama)


Veritabanı sorguları
Kullanıcı doğrulama
Rapor oluşturma
SINIFLAR VE NESNE YÖNELİMLİ
PROGRAMLAMA (OOP)
Nesne yönelimli programlamada nesnelerin özelliklerini (property)
ve davranışlarını (metot) tanımlayan şablondur.
Örnek:
Araba sınıfı:
 Özellikler: Marka, Model, Renk, Hız
 Davranışlar: Çalıştır, Durdur, Hızlan
Nesne (Object) Nedir?

Sınıftan üretilmiş gerçek varlıklardır.


Sınıf bir plan, nesne ise bu plandan oluşturulmuş örnektir.

Ö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ı

Öğrenci bilgilerini saklamak (isim, numara, bölüm)


Banka hesabı yönetimi (bakiye, hesap numarası)
Ürün yönetimi (ürün adı, fiyat, stok)
Uygulama
class Program
Bir öğrenci sınıfı oluşturun:
{
 Özellikler: Ad, Soyad, Numara static void Main()
 Metot: BilgiYazdir() {
Ogrenci ogr = new Ogrenci();
class Ogrenci [Link] = "Ali";
{ [Link] = "Yılmaz";
public string Ad { get; set; } [Link] = 123;
public string Soyad { get; set; } [Link]();
public int Numara { get; set; } }
public void BilgiYazdir() }
{
[Link]($"Ad: {Ad}, Soyad: {Soyad}, Numara: {Numara}");
}
}
Örnek Sorular

Ç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.

Bir okulun tüm öğrencilerinin numaralarını ayrı ayrı değişkenlerde


(ogr1, ogr2, ...) tutmak yerine, tek bir ogrenciNo dizisinde tutabiliriz.

Dizilerin elemanlarına indeks (index) numaraları ile erişiriz.

Ö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.

sayilar2[0] -> 10 değerini verir.

Dizilerle çalışırken genellikle for veya foreach döngüleri kullanılır. Bu,


tüm elemanları tek tek işlememizi sağlar.
Tek Boyutlu Dizi Örneği
Tek Boyutlu Dizi Örneği: Rastgele
Sayılar
Çok Boyutlu Diziler (2D)

Satır ve sütunlardan oluşan, tablo gibi düşünülebilecek veri yapılarıdır.


En yaygını iki boyutlu dizilerdir (matris).
[satir, sutun] şeklinde indekslenirler.

Örnek: Satranç tahtası, Excel tablosu.


Çok Boyutlu Diziler (2D) Örneği
Çok Boyutlu Dizilere Erişim ve Döngü
Çok Boyutlu Dizi Örneği: Çarpım
Tablosu
Metot (Fonksiyon) Nedir?

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.

Geri Dönüş Değeri: Metodun işi bitince çağrıldığı yere gönderdiği


sonuç. (int, string, void(hiçbir şey döndürmez))
Parametre: Metoda dışarıdan verilen girdiler.
Metot (Fonksiyon) Örneği
Geri Değer Döndüren Metot Örneği
Metot Örneği: Kare Hesaplama
Diziler ve Metotların Beraber
Kullanım Örneği-1
Örnek Sorular

Ç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

• Nesne Yönelimli Programlama (OOP), yazılımları sınıflar ve nesneler


üzerine inşa eder.
• Temel amaç: Gerçek dünyadaki kavramları yazılıma taşımaktır.
• OOP’nin 4 temel ilkesi:
• Encapsulation (Kapsülleme) → Veriyi gizleme, kontrollü erişim
• Inheritance (Kalıtım) → Kod tekrarını azaltma
• Polymorphism (Çok Biçimlilik) → Aynı arayüz, farklı davranış
• Abstraction (Soyutlama) → Gereksiz detayları gizleme
Sınıf Yapısı (Class Structure)
Sınıf: Nesnelerin özelliklerini (field/property) ve davranışlarını (method)
tanımlar.
Nesne: Sınıftan oluşturulan somut örnektir.
Encapsulation – Getter ve Setter
Encapsulation: Alanları (field) dışarıya doğrudan açmamak, kontrollü
erişim sağlamak.
Getter → Değeri okumak için
Setter → Değeri değiştirmek için
Constructor (Yapıcı Metot)

Nesne oluşturulurken otomatik çalışan özel metottur.


Parametre alabilir veya almadan çalışabilir.
this Anahtar Kelimesi

this, bulunduğu sınıfın o anki nesnesine referans verir.

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ı

[Link] Bağımsızlığı: Farklı işletim sistemlerinde çalışabilme


2.Yüksek Performans: Diğer popüler web framework'lerinden daha hızlı
[Link]üler Yapı: Sadece ihtiyaç duyulan bileşenlerin eklenebilmesi
[Link] Geliştirme: Cloud-native, microservice ve container desteği
5.Açık Kaynak: Topluluk desteği ve şeffaf geliştirme süreci
[Link]: Modern frontend framework'leriyle sorunsuz çalışabilme
7.Güvenlik: Güncel güvenlik tehditlerine karşı güçlü koruma
Kullanım Yerleri

Web Uygulamaları: Kurumsal web uygulamaları, e-ticaret siteleri


API Geliştirme: RESTful API'ler, microservice mimarileri
Real-time Uygulamalar: Sohbet uygulamaları, canlı veri akışları
Bulut Uygulamaları: Azure ve diğer bulut platformları için uygulamalar
Mobil Backend: Mobil uygulamalar için arka plan servisleri
IoT Uygulamaları: Nesnelerin interneti cihazları için backend
MVC (Model-View-Controller) Yapısı
MVC, yazılım mimarisinde kullanılan bir tasarım desenidir. Uygulamayı üç ana bileşene ayırarak daha organize ve sürdürülebilir kod yazmayı
sağlar.

1. Model (Veri Katmanı)


 Uygulama verilerini ve iş kurallarını temsil eder
 Veritabanı işlemlerini yönetir
 Veri doğrulama ve iş mantığını içerir
 View ve Controller'dan bağımsızdır

2. View (Görünüm Katmanı)


 Kullanıcı arayüzünü temsil eder
 Model'deki verileri kullanıcıya gösterir
 HTML, CSS ve JavaScript kullanır
 Mümkün olduğunca az iş mantığı içermelidir

3. Controller (İşlem Katmanı)


 Kullanıcı girdilerini işler
 Model ve View arasında köprü görevi görür
 İstekleri alır, Model ile etkileşime girer ve uygun View'ı döndürür
MVC Akışı:

[Link]ıcı bir istekte bulunur


[Link] isteği alır ve işler
[Link], Model ile etkileşime geçer
[Link] verileri işler ve Controller'a döndürür
[Link], uygun View'ı seçer ve Model verilerini View'a aktarır
[Link], kullanıcıya gösterilecek HTML'i oluşturur
[Link]ç kullanıcıya gönderilir
Visual Studio kullanarak ilk MVC
projesi

Linkten Visual Studio Community 2022


Linkten .NET SDK indirebilirsiniz
sürümünü indirebilirsiniz
dotnet --version -> Sürüm kontrolü sağlanır

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

public IActionResult Index()


{
ViewData["Message"] = "Hello
World! [Link] Core MVC çalışıyor";
return View();
}
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ı)

• Uygulamanın iş mantığını barındırır.


• Kullanıcı isteklerini karşılar ve hangi sayfanın (View) açılacağını belirler.
• Her Controller, .cs uzantılı bir C# sınıfıdır.
• Controller sınıf isimleri Controller ile bitmelidir.
Models (Veri Katmanı)

• Uygulamada kullanılan veri yapılarının ve iş kurallarının bulunduğu


katmandır.
• Genellikle veritabanı tablolarını temsil eden sınıflar içerir.
• Controller ile View arasında veri transferini sağlar.

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)

Kullanıcıya doğrudan sunulan statik dosyaların bulunduğu klasördür:


 CSS
 JavaScript
 Görseller
 Kütüphaneler (Bootstrap, jQuery)

Not:
Bu klasör içindeki dosyalara direkt URL üzerinden erişilebilir.
Örneğin: /css/[Link]
[Link] (Ayar Dosyaları)

• Projenin konfigürasyon dosyasıdır.


• Veritabanı bağlantı bilgileri ve diğer ayarlar burada saklanır.
• JSON formatında düzenlenir.
[Link] (Başlangıç Dosyası)
• Uygulamanın başlama noktasını belirler.
• Middleware'lerin ve route ayarlarının yapılandırıldığı dosyadır.

Not:
Varsayılan açılış sayfası: HomeController → Index
[Link] (Çalıştırma Ayarları)

• Proje çalıştırılırken kullanılacak ayarları barındırır:


• Tarayıcıda hangi adres açılacak
• Hangi port kullanılacak
• Çevre (Development, Production)

You might also like