Zonguldak Bülent Ecevit Üniversitesi | Öğr.Gör.Tahsin ÇİLOĞLU
Programlama değişkenleri hakkında düşündürücü sorular ve tartışma konuları...
C#, Microsoft tarafından geliştirilen, modern, nesne yönelimli ve tip güvenli bir programlama dilidir.
Masaüstü, mobil, web, oyun ve IoT gibi çok çeşitli platformlarda uygulama geliştirmek için kullanılır.
Profesyonel ve dinamik siteler
iOS ve Android uygulamaları
Unity ile oyun geliştirme
Dinamik kütüphaneler
C#, web geliştirmede oldukça popülerdir. .NET platformu üzerinde profesyonel ve dinamik web siteleri geliştirmek için kullanılır.
Avantajı:
C# ile oluşturulan web hizmetleri hızlı ve
güvenilirdir.
Tek bir dil ile tüm platformlara uygulama geliştirmek mümkün!
Xamarin kullanarak C# ile iOS, Android ve Windows için modern mobil uygulamalar geliştirebilirsiniz.
Oyun dünyasının en popüler dillerinden biri C#'tır.
770 milyondan fazla kullanıcısı olan Unity, C# ile sorunsuz çalışır.
Bağımlılık yapan, popüler oyunlar geliştirmek istiyorsanız C# öğrenmek kesinlikle doğru bir seçenektir.
Dinamik Bağlantı Kitaplığı (Dynamic Link Library)
Aynı anda birden fazla program tarafından kullanılabilen işlevler ve kodlar içeren kitaplıklardır. DLL dosyalarını C# ile kodlamak mümkündür.
Yeni bir dil öğrenmeden önce onu diğerlerinden ayıran özellikleri bilmek önemlidir.
Öğrenmesi nispeten kolaydır.
Esnek ve geliştirilebilir.
Yüksek performanslı.
"Syntax" hatalarının kolayca tespitini yapar. Sorunlar hakkında endişelenmenize gerek kalmaz.
Kod yazmayı daha hızlı ve kolay hale getiren hazır kitaplıkları mevcuttur.
Sıfırdan öğrenenler için bile son derece erişilebilir bir dildir.
C#, açık kaynak kodlu (open source) bir programlama dilidir.
C# ile hızlı kod yazmak diğer dillere göre daha kolaydır.
Yüksek performans gerektiren uygulamaları hızlı bir şekilde C# ile oluşturabilirsiniz.
C# iyi bir kariyer seçimi midir?
Web ve mobil uygulamalara ihtiyaç arttıkça C# geliştiricilerine talep de artıyor.
C# öğrenmek, kariyeriniz boyunca size büyük fayda sağlayacaktır.
Değişkenler, programlama dillerinde veri saklamak için kullanılan isimlendirilmiş hafıza alanlarıdır.
C# dilinde bir değişken tanımlarken, genellikle şu sözdizimi kullanılır:
tip isim = değer;
Değişkenin veri türünü belirtir (örn: int, double).
Değişkenin adıdır.
Değişkene atanan başlangıç değeridir (isteğe bağlı).
Değer tipleri bellekte doğrudan değeri saklar.
-2 milyar ile +2 milyar arasındaki tam sayı değerlerini saklar. 32-bit (4 Byte) yer kaplar. En sık kullanılan sayısal veri tipidir. Standart tam sayı tipidir. Döngü sayaçlarında ve matematiksel işlemlerde varsayılan olarak tercih edilir.
int tipinin yetersiz kaldığı çok büyük tam sayılar için kullanılır. 64-bit (8 Byte) yer kaplar. Sayı çok büyükse sonuna 'L' eklenebilir. T.C. Kimlik No, dosya boyutları (byte) veya zaman damgası (timestamp) gibi int sınırlarını aşan büyük veriler için kullanılır.
Küçük aralıktaki (-32,768 ile 32,767) tam sayılar için hafıza dostu bir tiptir. 16-bit (2 Byte) yer kaplar. Bellek tasarrufu sağlamak için küçük döngülerde veya yaş, gün, ay gibi 32.000 sınırını aşmayacak küçük verilerde kullanılır.
Ondalıklı (virgüllü) sayılar için kullanılır. Hızlıdır ancak hassasiyeti düşüktür. 4 Byte yer kaplar. Değerin sonuna 'f' harfi konulmalıdır. Oyun motorlarında (Unity gibi) fizik ve grafik hesaplamalarında performansı artırmak için sıkça tercih edilir.
Yüksek hassasiyetli ondalıklı sayılar için kullanılır. Varsayılan ondalık tiptir. 8 Byte yer kaplar. Bilimsel hesaplamalarda tercih edilir. C# matematik kütüphanesindeki (Math) fonksiyonların çoğu varsayılan olarak double döndürür.
Parasal ve finansal veriler için özel olarak tasarlanmıştır. Hata payı en düşüktür. 16 Byte yer kaplar. Değerin sonuna 'm' harfi konulmalıdır. Finansal uygulamalar, muhasebe yazılımları ve kritik parasal hesaplamalar için zorunludur. Yuvarlama hatalarını sıfıra indirir.
Sadece iki ihtimali saklar: 'true' (doğru) veya 'false' (yanlış). Karar yapılarında ve mantıksal kontrollerde kullanılır. Programın akışını kontrol etmek (if-else), döngüleri yönetmek ve durum kontrolü (açık/kapalı, başarılı/başarısız) için kullanılır.
Yalnızca tek bir karakteri (harf, rakam, sembol) saklar. Tek tırnak işareti (' ') içinde yazılır. Unicode destekler. Metin şifreleme algoritmalarında, dosya okuma işlemlerinde veya string parçalamada karakter bazlı kontrol için kullanılır.
Metin ifadelerini saklamak için kullanılır. Karakterlerin yan yana gelmesiyle oluşur. Çift tırnak (") içinde yazılır. Referans tipidir. C# dilinde en çok kullanılan tiplerden biridir. Metin birleştirme, parçalama ve arama gibi zengin metotlara (Methods) sahiptir.
Referans tipleri bellekte adres (referans) tutar.
Tüm veri tiplerini alabilir. Evrensel veri tipidir ancak tür dönüşümü gerektirir. Tüm tiplerin 'atasıdır'. İçerisine her türlü veri atılabilir ancak tür dönüşümü (casting) gerektirdiği için performans maliyeti vardır.
Aynı türden birden fazla veriyi tek bir isim altında saklar. İndekslerle erişilir.
Dizi, aynı türden birden fazla veriyi tek bir değişken adı altında saklamamızı sağlar. Her elemanın bir indeksi (index) vardır ve 0’dan başlar.
Diziler farklı yöntemlerle tanımlanabilir: Doğrudan atama, boyut belirterek veya new anahtar kelimesiyle.
Dizinin elemanlarına köşeli parantez [] ve indeks numarası ile erişilir. İndeksler 0'dan başlar.
Dizinin tüm elemanlarını gezmek için for döngüsü kullanılır. Length özelliği eleman sayısını verir.
foreach döngüsü, diziler üzerinde gezinmenin en kolay ve okunabilir yoludur.
Diziler üzerinde matematiksel işlemler (Toplam, Ortalama, En Büyük/Küçük Bulma) yapılabilir.
Bir döngü kullanarak kullanıcının girdiği verileri diziye kaydedebiliriz.
Kullanıcıdan öğrenci isimlerini alıp ekrana yazdıran örnek.
Satır ve sütunlardan oluşan, tablo benzeri 2 boyutlu dizilerdir.
char dizileri metinleri karakter bazlı işlemek için kullanılır.
Array.Copy metodu, bir dizinin içeriğini başka bir diziye hızlıca kopyalar.
Nesne yönelimli programlamanın temel yapı taşıdır. Veri (özellikler) ve davranışları (metotlar) bir arada tutar. Referans tipidir.
Amaç: Veriyi korumak, dış müdahaleyi kontrol etmek.
📌 Gerçek hayat: Bankadaki bakiyeye herkes doğrudan dokunamaz.
Amaç: Ortak özellikleri tekrar yazmamak.
📌 Gerçek hayat: İnsan da bir canlıdır.
Amaç: Aynı metot, farklı davranış.
📌 Gerçek hayat: Her hayvan ses çıkarır ama sesi farklıdır.
Amaç: Gereksiz detayı gizlemek.
📌 Gerçek hayat: Arabanın çalışması önemli, motorun içi değil.
Nesne oluşturulurken otomatik çalışan metot.
📌 Avantaj: Nesne boş veya hatalı oluşmaz.
Bir sınıfa “ne yapacağını” zorunlu kılar.
📌 Büyük projelerde olmazsa olmazdır.
Bir sınıf başka bir sınıfı içerir.
📌 Araba motoru miras almaz, motoru vardır.
Derleyicinin değişken tipini otomatik belirlemesini sağlar. Kod yazımını hızlandırır ancak okunabilirlik için dikkatli kullanılmalıdır.
Değeri program boyunca değişmeyen sabitleri tanımlar. Derleme zamanında değeri belirlenir ve performans avantajı sağlar.
Değer tiplerinin null (boş) değer alabilmesini sağlar. Veritabanı işlemlerinde ve opsiyonel değerlerde kullanışlıdır.
Sabit değerleri (günler, aylar, durumlar) anlamlı isimlerle gruplamak için kullanılır.
enum Gunler { Pazartesi, Sali, Carsamba }
Gunler bugun = Gunler.Pazartesi;
Class benzeri ama değer tipidir. Hafif veri yapıları için kullanılır (koordinat, renk vb.).
Değişken isimlendirme kuralları:
int ogrenciSayisi; // Doğru
int 1sayi; // Yanlış (Sayı ile başlamaz)
string ad_soyad; // Doğru
string ad soyad; // Yanlış (Boşluk içeremez)
Tüm değişkenleri bir arada kullanan kod.
class Program
{
static void Main()
{
int yas = 21;
double ortalama = 78.5;
bool basariliMi = true;
string ad = "Ayşe";
char sinif = 'A';
decimal ucret = 1500.50m;
Console.WriteLine(yas); Console.WriteLine(ortalama); } }
Bir değişken sadece tanımlandığı blok (süslü parantezler) içerisinde yaşar ve erişilebilir.
Metot içinde tanımlanır. Sadece o metotta geçerlidir.
Sınıf içinde tanımlanır. Tüm metotlardan erişilebilir.
Değişkenler, Enum, Struct ve Class yapılarının bir arada kullanıldığı kapsamlı örnek uygulama.
Değişkenler, programlamanın alfabesidir. Onları anlamadan karmaşık algoritmalar kurmak imkansızdır.
Bol bol farklı veri tipleriyle değişken tanımlayarak ve ekrana yazdırarak pratik yapın.
Stack Overflow ve Microsoft Docs gibi kaynaklardan sürekli yeni kullanımları inceleyin.
Unutmayın: İyi bir yazılımcı, sadece kod yazan değil, veriyi en verimli şekilde yöneten kişidir.
Kendinizi deneyin! Cevapları görmek için butona tıklayın.
1. C# programlama dili hangi firma tarafından geliştirilmiştir?
Doğru Cevap: C (Microsoft)
Açıklama: C#, Microsoft tarafından .NET platformu için geliştirilmiştir.
2. Aşağıdakilerden hangisi .NET platformunun en yaygın kullanıldığı alanlardan biridir?
Doğru Cevap: B (Web Geliştirme)
Açıklama: .NET platformu, özellikle profesyonel ve dinamik web siteleri geliştirmek için çok yaygın kullanılır.
3. C# ile mobil uygulama geliştirmek için hangi teknoloji/platform kullanılır?
Doğru Cevap: C (Xamarin)
Açıklama: Xamarin, C# kullanarak iOS ve Android uygulamaları geliştirmeye olanak tanır.
4. Oyun geliştirmede C# dili hangi popüler oyun motoru ile özdeşleşmiştir?
Doğru Cevap: B (Unity)
Açıklama: Unity oyun motoru, betik dili olarak C# kullanır ve dünyada çok popülerdir.
5. DLL kısaltmasının açılımı nedir?
Doğru Cevap: D (Dynamic Link Library)
Açıklama: Dinamik Bağlantı Kitaplığı, birden çok programın ortak kullanabildiği kod kütüphaneleridir.
6. Programdaki "syntax" (yazım) hatalarını bulmamıza yardımcı olan araç hangisidir?
Doğru Cevap: B (Debugger)
Açıklama: Debugger, kodun adım adım çalıştırılmasını ve hataların tespit edilmesini sağlar.
7. C# dilinin "Açık Kaynak" (Open Source) olması ne anlama gelir?
Doğru Cevap: A
Açıklama: Açık kaynak, topluluk desteğine ve kodun herkesçe incelenebilmesine olanak tanır.
8. C# kod dosyalarının uzantısı nedir?
Doğru Cevap: D (.cs)
Açıklama: C Sharp dosyaları .cs uzantısı ile kaydedilir.
9. Bellekte veri saklamak için ayrılan isimlendirilmiş alanlara ne denir?
Doğru Cevap: D (Değişken)
Açıklama: Değişkenler, verileri geçici olarak tutan bellek kutularıdır.
10. C# dilinde doğru değişken tanımlama sözdizimi hangisidir?
Doğru Cevap: B (tip isim = değer;)
Açıklama: Önce veri tipi, sonra değişken adı belirtilir (örn: int sayi = 5;).
11. "int" veri tipi hangi tür verileri saklar?
Doğru Cevap: C (Tam Sayı)
Açıklama: Integer (int) sadece tam sayıları saklar.
12. "3.14" gibi ondalıklı bir sayıyı saklamak için en uygun veri tipi hangisidir?
Doğru Cevap: D (double)
Açıklama: Double veya float ondalıklı sayılar için kullanılır.
13. Metinsel ifadeleri (yazıları) saklamak için hangi veri tipi kullanılır?
Doğru Cevap: B (string)
Açıklama: String, karakter dizilerini (metinleri) tutar.
14. "char" veri tipi için değer atanırken hangi işaret kullanılır?
Doğru Cevap: D (Tek Tırnak)
Açıklama: Char tek bir karakterdir ve tek tırnakla tanımlanır (örn: 'A').
15. "bool" veri tipi aşağıdaki değerlerden hangisini alabilir?
Doğru Cevap: C (true / false)
Açıklama: Boolean mantıksal tiptir, sadece doğru veya yanlış değerini alır.
16. Aşağıdaki değişken isimlerinden hangisi YANLIŞTIR?
Doğru Cevap: D (1.Sinif)
Açıklama: Değişken isimleri rakamla başlayamaz.
17. "Scope" (Kapsam) kavramı neyi ifade eder?
Doğru Cevap: B
Açıklama: Bir değişken sadece tanımlandığı süslü parantezler { } içinde geçerlidir.
18. Değeri tanımlandıktan sonra asla değiştirilemeyen değişkenler için hangi anahtar kelime kullanılır?
Doğru Cevap: C (const)
Açıklama: Constant (sabit) değişkenlerin değeri program boyunca sabit kalır.
19. "var" anahtar kelimesi kullanıldığında ne olur?
Doğru Cevap: C
Açıklama: 'var' kullanıldığında derleyici atanan değere bakarak tipi kendisi belirler.
20. "int?" (Nullable int) ne anlama gelir?
Doğru Cevap: D
Açıklama: Normalde sayılar null olamaz, ancak ? eklenerek null değer alabilir hale gelirler.
Öğr.Gör.Tahsin ÇİLOĞLU
int yas = 20;
long nufus = 85000000;
short ogrenciSayisi = 120;
float sicaklik = 36.5f;
double pi = 3.14159;
decimal fiyat = 199.99m;
bool girisYaptiMi = true;
char harf = 'A';
string ad = "Tahsin";
object veri = 10;
veri = "Merhaba";
int[] notlar = { 70, 80, 90 };
class Ogrenci
{
public string Ad;
public int Yas;
}
var sayi = 5; // int
var isim = "Ali"; // string
const double KDV = 0.18;
int? not = null;
enum Gunler
{
Pazartesi,
Sali,
Carsamba
}
struct Nokta
{
public int X;
public int Y;
}
class Program
{
// Class Scope (Her yerden erişilir)
int genelDegisken = 100;
void Islem()
{
// Local Scope (Sadece burada geçerli)
int yerelDegisken = 50;
Console.WriteLine(genelDegisken); // ✅ Erişim var
Console.WriteLine(yerelDegisken); // ✅ Erişim var
}
void BaskaIslem()
{
Console.WriteLine(genelDegisken); // ✅ Erişim var
// Console.WriteLine(yerelDegisken); // ❌ HATA! Tanımsız
}
}
int[] sayilar = { 10, 20, 30 };
// 1. Doğrudan Değer Atayarak
string[] sehirler = { "Ankara", "İstanbul", "İzmir" };
int[] sayilar = { 5, 10, 15 };
int[] sayilar = { 2, 4, 6, 8 };
string[] dersler = { "Matematik", "Fizik", "Programlama" };
// Toplam ve Ortalama
int[] notlar = { 60, 70, 80, 90 };
int toplam = 0;
for (int i = 0; i < notlar.Length; i++) toplam += notlar[i];
double ortalama = (double)toplam / notlar.Length;
int[] sayilar = new int[3];
string[] ogrenciler = new string[3];
// Matris Tanımlama
int[,] matris = {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
Console.WriteLine(matris[1, 2]); // 6
char[] harfler = { 'A', 'B', 'C' };
int[] dizi1 = { 1, 2, 3 };
int[] dizi2 = new int[dizi1.Length];
using System; // Console sınıfını kullanabilmek için gerekli kütüphane
namespace DegiskenOrnekUygulama // Proje için isim alanı (namespace)
{
enum Gunler // Enum tanımı (sabit değer grubu)
{
Pazartesi, // 0
Sali, // 1
Carsamba // 2
}
struct Nokta // Struct tanımı (değer tipi)
{
public int X; // X koordinatı
public int Y; // Y koordinatı
}
class Ogrenci // Class tanımı (referans tipi)
{
public string Ad; // Öğrenci adı
public int Yas; // Öğrenci yaşı
}
class Program // Ana program sınıfı
{
static void Main(string[] args) // Programın başlangıç noktası
{
int yas = 20; // int: tam sayı değişken
long nufus = 85000000; // long: büyük tam sayılar
short ogrenciSayisi = 120; // short: küçük tam sayılar
float sicaklik = 36.5f; // float: ondalıklı sayı (f zorunlu)
double pi = 3.14159; // double: hassas ondalıklı sayı
decimal fiyat = 199.99m; // decimal: para işlemleri (m zorunlu)
bool girisYaptiMi = true; // bool: true / false değer tutar
char harf = 'A'; // char: tek karakter
string ad = "Tahsin"; // string: metin tutar
object veri = 10; // object: her türden veri alabilir
veri = "Merhaba"; // object içine string atandı
int[] notlar = { 70, 80, 90 }; // int türünde dizi tanımı
Ogrenci ogrenci = new Ogrenci(); // Ogrenci sınıfından nesne oluşturma
ogrenci.Ad = "Ali"; // Nesnenin Ad özelliği
ogrenci.Yas = 21; // Nesnenin Yas özelliği
var sayi = 5; // var: türü otomatik int olur
var isim = "Ayşe"; // var: türü otomatik string olur
const double KDV = 0.18; // const: sabit değer (değiştirilemez)
int? not = null; // nullable int: null değer alabilir
Gunler bugun = Gunler.Pazartesi; // Enum kullanımı
Nokta nokta; // Struct değişkeni tanımlama
nokta.X = 10; // Struct X değeri
nokta.Y = 20; // Struct Y değeri
Console.WriteLine("=== SAYISAL DEĞİŞKENLER ==="); // Başlık yazdırma
Console.WriteLine("Yaş: " + yas); // int değeri yazdırma
Console.WriteLine("Nüfus: " + nufus); // long değeri yazdırma
Console.WriteLine("Öğrenci Sayısı: " + ogrenciSayisi); // short yazdırma
Console.WriteLine("\n=== ONDALIK SAYILAR ==="); // Alt başlık
Console.WriteLine("Sıcaklık: " + sicaklik); // float yazdırma
Console.WriteLine("Pi: " + pi); // double yazdırma
Console.WriteLine("Fiyat: " + fiyat); // decimal yazdırma
Console.WriteLine("\n=== DİĞER TÜRLER ==="); // Başlık
Console.WriteLine("Giriş Yaptı mı: " + girisYaptiMi); // bool yazdırma
Console.WriteLine("Harf: " + harf); // char yazdırma
Console.WriteLine("Ad: " + ad); // string yazdırma
Console.WriteLine("\n=== DİZİ ==="); // Dizi başlığı
foreach (int n in notlar) // Dizi üzerinde dönme
{
Console.WriteLine("Not: " + n); // Her notu yazdırma
}
Console.WriteLine("\n=== CLASS ==="); // Class başlığı
Console.WriteLine("Öğrenci Adı: " + ogrenci.Ad); // Nesne özelliği
Console.WriteLine("Öğrenci Yaşı: " + ogrenci.Yas); // Nesne özelliği
Console.WriteLine("\n=== ENUM ==="); // Enum başlığı
Console.WriteLine("Bugün: " + bugun); // Enum değeri yazdırma
Console.WriteLine("\n=== STRUCT ==="); // Struct başlığı
Console.WriteLine("Nokta X: " + nokta.X); // Struct X değeri
Console.WriteLine("Nokta Y: " + nokta.Y); // Struct Y değeri
Console.WriteLine("\n=== SABİT ==="); // Sabit başlığı
Console.WriteLine("KDV: " + KDV); // const yazdırma
Console.WriteLine("\n=== NULLABLE ==="); // Nullable başlığı
Console.WriteLine("Not: " + not); // null değer yazdırma
Console.ReadLine(); // Konsolun kapanmasını engeller
}
}
}
// Matematiksel İşlem Örneği
int a = 10;
int b = 20;
int toplam = a + b;
Console.WriteLine("Toplam: " + toplam); // Çıktı: 30
// Büyük Sayı Örneği
long dunyaNufusu = 8000000000;
long isikYiliMesafesi = 9460730472580800L;
Console.WriteLine("Dünya Nüfusu: " + dunyaNufusu);
// Hafıza Tasarrufu Örneği
short sinifMevcudu = 25;
short havaSicakligi = -5;
Console.WriteLine("Sıcaklık: " + havaSicakligi);
// Fiziksel Hesaplama Örneği
float yerCekimi = 9.81f;
float yaricap = 5.0f;
float alan = 3.14f * yaricap * yaricap;
// Hassas Hesaplama Örneği
double atomAgirligi = 1.00794;
double piSayisi = 3.14159265359;
Console.WriteLine(piSayisi);
// Finansal İşlem Örneği
decimal urunFiyati = 1250.99m;
decimal kdvOrani = 0.18m;
decimal toplamTutar = urunFiyati * (1 + kdvOrani);
// Karar Mekanizması Örneği
bool ogrenciMi = true;
bool mezunMu = false;
if (ogrenciMi) {
Console.WriteLine("Öğrenci İndirimi Uygulandı");
}
// Karakter Kontrolü Örneği
char notHarfi = 'A';
char sembol = '@';
Console.WriteLine("Notunuz: " + notHarfi);
// Metin İşleme Örneği
string ad = "Ahmet";
string soyad = "Yılmaz";
string tamAd = ad + " " + soyad; // Birleştirme
Console.WriteLine("Hoşgeldin " + tamAd);
using System; // Console sınıfını kullanabilmek için System kütüphanesini ekler
class Araba // Araba adlı bir sınıf tanımlar (nesne üretmek için şablon)
{
public string Marka; // Arabanın markasını tutmak için public alan
public string Model; // Arabanın model bilgisini tutmak için public alan
public int Yil; // Arabanın üretim yılını tutmak için public alan
public void BilgiYazdir() // Arabanın bilgilerini ekrana yazdıran metot
{
Console.WriteLine( // Konsola çıktı vermek için kullanılır
Yil + // Yıl bilgisini yazdırmak için
" model " + // Sabit açıklama metni eklemek için
Marka + // Marka bilgisini ekrana yazdırmak için
" " + // Okunabilirlik için boşluk eklemek için
Model // Model bilgisini ekrana yazdırmak için
);
}
}
class Program // Programın çalışmasını başlatan ana sınıf
{
static void Main(string[] args) // Uygulamanın başladığı ana metot
{
Araba araba1 = new Araba(); // Araba sınıfından yeni bir nesne oluşturmak için
araba1.Marka = "Toyota"; // Oluşturulan nesnenin Marka alanına değer atamak için
araba1.Model = "Corolla"; // Oluşturulan nesnenin Model alanına değer atamak için
araba1.Yil = 2023; // Oluşturulan nesnenin Yil alanına değer atamak için
araba1.BilgiYazdir(); // Nesneye ait metodu çağırarak bilgileri yazdırmak için
}
}
using System; // Console işlemleri için gerekli
class BankaHesabi // Banka hesabını temsil eden sınıf
{
public string HesapSahibi; // Hesap sahibinin adını tutmak için
public decimal Bakiye; // Hesaptaki parayı tutmak için (para → decimal)
public void BakiyeGoster() // Mevcut bakiyeyi ekrana yazdıran metot
{
Console.WriteLine( // Konsola çıktı vermek için
HesapSahibi + // Hesap sahibinin adını göstermek için
" - Bakiye: " + // Sabit açıklama metni
Bakiye + // Güncel bakiyeyi göstermek için
" TL" // Para birimini belirtmek için
);
}
}
class Program // Programın ana sınıfı
{
static void Main(string[] args) // Programın başladığı metot
{
BankaHesabi hesap = new BankaHesabi(); // BankaHesabi sınıfından nesne üretmek için
hesap.HesapSahibi = "Mehmet Demir"; // Hesap sahibini belirlemek için
hesap.Bakiye = 1500.75m; // Başlangıç bakiyesini atamak için
hesap.BakiyeGoster(); // Bakiyeyi ekrana yazdırmak için
}
}
using System; // Console sınıfını kullanabilmek için
class BankaHesabi // Banka hesabını temsil eden sınıf
{
public string HesapSahibi; // Hesap sahibinin adını tutmak için alan
public decimal Bakiye; // Hesaptaki parayı tutmak için (para → decimal)
public void ParaCek(decimal tutar) // Hesaptan para çekme işlemini yapan metot
{
if (tutar <= Bakiye) // Çekilmek istenen tutar bakiyeden küçük mü?
{
Bakiye = Bakiye - tutar; // Bakiye güncellenir (çekilen para düşülür)
Console.WriteLine( // Başarılı işlem mesajı yazdırılır
"Çekilen Tutar: " + tutar + " TL"
);
}
else // Bakiye yetersizse
{
Console.WriteLine( // Hata mesajı yazdırılır
"Yetersiz bakiye!"
);
}
}
public void BakiyeGoster() // Güncel bakiyeyi gösteren metot
{
Console.WriteLine( // Konsola çıktı vermek için
"Kalan Bakiye: " + Bakiye + " TL"
);
}
}
class Program // Programın ana sınıfı
{
static void Main(string[] args) // Programın başladığı ana metot
{
BankaHesabi hesap = new BankaHesabi(); // BankaHesabi sınıfından nesne oluşturulur
Console.Write("Hesap Sahibinin Adı: "); // Kullanıcıdan hesap sahibi adı istenir
hesap.HesapSahibi = Console.ReadLine(); // Girilen ad okunur ve atanır
Console.Write("Başlangıç Bakiyesi: "); // Kullanıcıdan başlangıç bakiyesi istenir
hesap.Bakiye = decimal.Parse( // Girilen değer decimal’a çevrilir
Console.ReadLine()
);
Console.Write("Çekmek istediğiniz tutar: "); // Çekilecek tutar sorulur
decimal cekilecekTutar = decimal.Parse( // Girilen tutar decimal’a çevrilir
Console.ReadLine()
);
hesap.ParaCek(cekilecekTutar); // Para çekme işlemi yapılır
hesap.BakiyeGoster(); // Kalan bakiye ekrana yazdırılır
}
}
using System; // Console sınıfını kullanabilmek için gerekli
class Ogrenci // Öğrenciyi temsil eden sınıf (şablon)
{
public string Ad; // Öğrencinin adını tutmak için
public string Soyad; // Öğrencinin soyadını tutmak için
public int Numara; // Öğrencinin okul numarasını tutmak için
public double Vize; // Öğrencinin vize notunu tutmak için
public double Final; // Öğrencinin final notunu tutmak için
public double OrtalamaHesapla() // Not ortalamasını hesaplayan metot
{
double vizeKatki = Vize * 0.40; // Vize notunun %40'ını almak için
double finalKatki = Final * 0.60; // Final notunun %60'ını almak için
return vizeKatki + finalKatki; // Toplam ortalamayı geri döndürmek için
}
public void BilgiVeDurumYazdir() // Öğrenci bilgilerini ve sonucu yazdıran metot
{
double ortalama = OrtalamaHesapla(); // Ortalama hesaplanıp değişkene alınır
Console.WriteLine("\n--- ÖĞRENCİ BİLGİLERİ ---"); // Başlık yazdırmak için
Console.WriteLine("Ad Soyad: " + Ad + " " + Soyad); // Öğrencinin adı ve soyadı
Console.WriteLine("Numara: " + Numara); // Öğrenci numarası
Console.WriteLine("Vize Notu: " + Vize); // Vize notu
Console.WriteLine("Final Notu: " + Final); // Final notu
Console.WriteLine("Ortalama: " + ortalama); // Hesaplanan ortalama
if (ortalama >= 60) // Ortalama 60 ve üzeri mi kontrolü
Console.WriteLine("Durum: GEÇTİ"); // Başarılıysa
else
Console.WriteLine("Durum: KALDI"); // Başarısızsa
}
}
class Program // Programın ana sınıfı
{
static void Main(string[] args) // Programın çalışmaya başladığı ana metot
{
Ogrenci ogr = new Ogrenci(); // Ogrenci sınıfından bir nesne üretmek için
Console.Write("Öğrenci Adı: "); // Kullanıcıdan ad almak için
ogr.Ad = Console.ReadLine(); // Girilen değeri Ad alanına atamak için
Console.Write("Öğrenci Soyadı: "); // Kullanıcıdan soyad almak için
ogr.Soyad = Console.ReadLine(); // Girilen değeri Soyad alanına atamak için
Console.Write("Öğrenci Numarası: "); // Kullanıcıdan numara almak için
ogr.Numara = Convert.ToInt32(Console.ReadLine());
// Metin olarak gelen değeri int türüne çevirmek için
Console.Write("Vize Notu: "); // Kullanıcıdan vize notu almak için
ogr.Vize = Convert.ToDouble(Console.ReadLine());
// Metni double türüne dönüştürmek için
Console.Write("Final Notu: "); // Kullanıcıdan final notu almak için
ogr.Final = Convert.ToDouble(Console.ReadLine());
// Metni double türüne dönüştürmek için
ogr.BilgiVeDurumYazdir(); // Tüm bilgileri ve sonucu ekrana yazdırmak için
}
}
using System; // Console işlemleri için gerekli
class Kitap // Kitabı temsil eden sınıf
{
public string KitapAdi; // Kitabın adını tutmak için
public string Yazar; // Kitabın yazarını tutmak için
public bool OduncDurumu; // Kitap ödünçte mi bilgisini tutmak için
public void KitapBilgisiYazdir() // Kitap bilgilerini ekrana yazdıran metot
{
Console.WriteLine("\n--- KİTAP BİLGİLERİ ---"); // Başlık yazdırmak için
Console.WriteLine("Kitap Adı: " + KitapAdi); // Kitap adını göstermek için
Console.WriteLine("Yazar: " + Yazar); // Yazar adını göstermek için
if (OduncDurumu) // Kitap ödünçte mi kontrolü
Console.WriteLine("Durum: Ödünçte"); // Ödünçteyse
else
Console.WriteLine("Durum: Rafta"); // Raftaysa
}
public void OduncAl() // Kitabı ödünç alma işlemi
{
if (!OduncDurumu) // Kitap rafta mı kontrolü
{
OduncDurumu = true; // Kitap ödünçte olarak işaretlenir
Console.WriteLine("Kitap başarıyla ödünç alındı.");
}
else
{
Console.WriteLine("Kitap zaten ödünçte!");
}
}
public void IadeEt() // Kitabı iade etme işlemi
{
if (OduncDurumu) // Kitap ödünçte mi kontrolü
{
OduncDurumu = false; // Kitap rafta olarak işaretlenir
Console.WriteLine("Kitap başarıyla iade edildi.");
}
else
{
Console.WriteLine("Bu kitap zaten rafta!");
}
}
}
class Program // Programın ana sınıfı
{
static void Main(string[] args) // Programın başladığı ana metot
{
Kitap kitap = new Kitap(); // Kitap sınıfından bir nesne oluşturmak için
Console.Write("Kitap adını giriniz: "); // Kullanıcıdan kitap adı almak için
kitap.KitapAdi = Console.ReadLine(); // Girilen değeri KitapAdi alanına atamak için
Console.Write("Yazar adını giriniz: "); // Kullanıcıdan yazar adı almak için
kitap.Yazar = Console.ReadLine(); // Girilen değeri Yazar alanına atamak için
kitap.OduncDurumu = false; // Kitap başlangıçta rafta kabul edilir
Console.WriteLine("\n1 - Kitap Ödünç Al"); // Menü seçeneği göstermek için
Console.WriteLine("2 - Kitap İade Et"); // Menü seçeneği göstermek için
Console.Write("Seçiminiz: "); // Kullanıcıdan seçim almak için
int secim = Convert.ToInt32(Console.ReadLine());
// Kullanıcı seçimini int'e çevirmek için
if (secim == 1) // Kullanıcı ödünç almayı seçtiyse
kitap.OduncAl(); // Ödünç alma metodu çağrılır
else if (secim == 2) // Kullanıcı iade etmeyi seçtiyse
kitap.IadeEt(); // İade metodu çağrılır
else
Console.WriteLine("Geçersiz seçim!"); // Hatalı giriş uyarısı
kitap.KitapBilgisiYazdir(); // Son durumu ekrana yazdırmak için
}
}
// var ile Otomatik Tür Belirleme
var sayi = 42; // Derleyici int olarak algılar
var metin = "Merhaba"; // Derleyici string olarak algılar
var ondalik = 3.14; // Derleyici double olarak algılar
var liste = new int[] { 1, 2, 3 }; // Derleyici int[] olarak algılar
// Karmaşık tiplerde kullanımı
var ogrenci = new { Ad = "Ali", Yas = 20 }; // Anonim tip
Console.WriteLine(ogrenci.Ad); // Çıktı: Ali
// Sabit Değer Tanımlama
const double PI = 3.14159;
const int MAX_OGRENCI = 30;
const string OKUL_ADI = "ZBEU";
// Kullanım Örneği
double yaricap = 5.0;
double alan = PI * yaricap * yaricap;
Console.WriteLine($"Daire Alanı: {alan}");
// const int MAX_OGRENCI = 40; // HATA! const değiştirilemez
// Nullable Değişkenler
int? yas = null; // Null değer alabilir
double? sicaklik = 36.5; // Normal değer de alabilir
// Null Kontrolü
if (yas.HasValue)
{
Console.WriteLine("Yaş: " + yas.Value);
}
else
{
Console.WriteLine("Yaş bilgisi yok");
}
// Null-Coalescing Operatörü
int gercekYas = yas ?? 0; // yas null ise 0 kullan
Console.WriteLine("Gerçek Yaş: " + gercekYas); // Çıktı: 0
// object ile Çoklu Tip Depolama
object veri1 = 100; // int değer
object veri2 = "Merhaba"; // string değer
object veri3 = 3.14; // double değer
object veri4 = true; // bool değer
// Tip dönüşümü gerekir
int sayi = (int)veri1;
string metin = (string)veri2;
Console.WriteLine(sayi); // 100
Console.WriteLine(metin); // Merhaba
// Dizi Tanımlama ve Kullanım
int[] sayilar = new int[5]; // 5 elemanlı dizi
sayilar[0] = 10;
sayilar[1] = 20;
sayilar[2] = 30;
// Direkt değer atama
string[] sehirler = { "Ankara", "İstanbul", "İzmir" };
// Dizi uzunluğu
Console.WriteLine("Eleman sayısı: " + sehirler.Length);
// Enum ile Menü Sistemi
enum MenuSecenekleri
{
YeniDosya = 1,
Ac = 2,
Kaydet = 3,
Cikis = 4
}
MenuSecenekleri secim = MenuSecenekleri.Kaydet;
if (secim == MenuSecenekleri.Kaydet)
{
Console.WriteLine("Dosya kaydediliyor...");
}
Console.WriteLine("Seçim numarası: " + (int)secim); // 3
// Struct ile Koordinat Sistemi
struct Nokta3D
{
public int X;
public int Y;
public int Z;
public double Mesafe()
{
return Math.Sqrt(X*X + Y*Y + Z*Z);
}
}
Nokta3D nokta;
nokta.X = 3;
nokta.Y = 4;
nokta.Z = 5;
Console.WriteLine("Mesafe: " + nokta.Mesafe());
// Dizi Nedir ve Neden Kullanılır?
// Tek tek değişken tanımlamak yerine:
// int not1 = 70, not2 = 80, not3 = 90; // Kötü yöntem
// Dizi kullanımı:
int[] notlar = { 70, 80, 90, 85, 95 };
// Avantajlar:
// 1. Tek isimle çok veri
// 2. Döngülerle kolay işlem
// 3. Düzenli veri yapısı
for (int i = 0; i < notlar.Length; i++)
{
Console.WriteLine($"{i+1}. Not: {notlar[i]}");
}
// Farklı Tanımlama Yöntemleri
// 1. Boyut belirtip sonra değer atama
int[] yontem1 = new int[3];
yontem1[0] = 10;
yontem1[1] = 20;
yontem1[2] = 30;
// 2. Direkt değer atama
int[] yontem2 = { 10, 20, 30 };
// 3. new ile değer atama
int[] yontem3 = new int[] { 10, 20, 30 };
// 4. Boş dizi (varsayılan değerlerle)
int[] yontem4 = new int[5]; // Hepsi 0
// Dizi İndeksleme ve Erişim
string[] meyveler = { "Elma", "Armut", "Muz", "Çilek" };
// İndeks 0'dan başlar
Console.WriteLine("İlk meyve: " + meyveler[0]); // Elma
Console.WriteLine("Son meyve: " + meyveler[3]); // Çilek
// Negatif indeks OLMAZ (Hata verir)
// Console.WriteLine(meyveler[-1]); // HATA!
// Dizi uzunluğu ile son eleman
Console.WriteLine("Son: " + meyveler[meyveler.Length - 1]);
// for Döngüsü ile Dizi İşleme
int[] sayilar = { 2, 4, 6, 8, 10 };
int toplam = 0;
// Klasik for döngüsü
for (int i = 0; i < sayilar.Length; i++)
{
Console.WriteLine($"sayilar[{i}] = {sayilar[i]}");
toplam += sayilar[i];
}
Console.WriteLine("Toplam: " + toplam);
// Tersten yazdırma
for (int i = sayilar.Length - 1; i >= 0; i--)
{
Console.Write(sayilar[i] + " ");
}
// foreach ile Kolay Dizi Gezinme
string[] dersler = { "Matematik", "Fizik", "Kimya", "Biyoloji" };
// foreach: indeks gerekmez
foreach (string ders in dersler)
{
Console.WriteLine("Ders: " + ders);
}
// Sayılarla işlem
int[] notlar = { 60, 70, 80, 90, 100 };
int toplam = 0;
foreach (int not in notlar)
{
toplam += not;
}
double ortalama = (double)toplam / notlar.Length;
Console.WriteLine("Ortalama: " + ortalama);
// Dizi Üzerinde Matematiksel İşlemler
int[] sayilar = { 45, 23, 67, 12, 89, 34 };
// Toplam hesaplama
int toplam = 0;
foreach (int sayi in sayilar)
{
toplam += sayi;
}
// En büyük değer bulma
int max = sayilar[0];
foreach (int sayi in sayilar)
{
if (sayi > max) max = sayi;
}
// En küçük değer
int min = sayilar[0];
foreach (int sayi in sayilar)
{
if (sayi < min) min = sayi;
}
Console.WriteLine($"Toplam: {toplam}");
Console.WriteLine($"Max: {max}, Min: {min}");
// Kullanıcıdan Dizi Elemanlarını Alma
int[] sayilar = new int[3];
for (int i = 0; i < sayilar.Length; i++)
{
Console.Write($"{i+1}. sayıyı girin: ");
sayilar[i] = Convert.ToInt32(Console.ReadLine());
}
// Girilen değerleri göster
Console.WriteLine("\nGirilen sayılar:");
foreach (int sayi in sayilar)
{
Console.WriteLine(sayi);
}
// String Dizisi ile İsim Listesi
string[] ogrenciler = new string[3];
// Kullanıcıdan isim alma
for (int i = 0; i < ogrenciler.Length; i++)
{
Console.Write($"{i+1}. öğrencinin adı: ");
ogrenciler[i] = Console.ReadLine();
}
// İsimleri numaralı liste olarak yazdır
Console.WriteLine("\n=== ÖĞRENCİ LİSTESİ ===");
for (int i = 0; i < ogrenciler.Length; i++)
{
Console.WriteLine($"{i+1}. {ogrenciler[i]}");
}
// 2D Dizi (Matris) Kullanımı
int[,] matris = {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
// Matris elemanlarına erişim
Console.WriteLine("Ortadaki eleman: " + matris[1, 1]); // 5
// Tüm matrisi yazdırma
for (int satir = 0; satir < 3; satir++)
{
for (int sutun = 0; sutun < 3; sutun++)
{
Console.Write(matris[satir, sutun] + " ");
}
Console.WriteLine();
}
// char Dizisi ile Kelime İşleme
char[] harfler = { 'M', 'e', 'r', 'h', 'a', 'b', 'a' };
// char dizisini string'e çevirme
string kelime = new string(harfler);
Console.WriteLine(kelime); // Merhaba
// String'i char dizisine çevirme
string metin = "Selam";
char[] karakterler = metin.ToCharArray();
foreach (char harf in karakterler)
{
Console.WriteLine(harf);
}
// Dizi Kopyalama Yöntemleri
int[] orijinal = { 1, 2, 3, 4, 5 };
// Yöntem 1: Array.Copy
int[] kopya1 = new int[orijinal.Length];
Array.Copy(orijinal, kopya1, orijinal.Length);
// Yöntem 2: Clone
int[] kopya2 = (int[])orijinal.Clone();
// Yöntem 3: Döngü ile
int[] kopya3 = new int[orijinal.Length];
for (int i = 0; i < orijinal.Length; i++)
{
kopya3[i] = orijinal[i];
}
// Kopyayı değiştirmek orijinali etkilemez
kopya1[0] = 999;
Console.WriteLine("Orijinal[0]: " + orijinal[0]); // 1
Console.WriteLine("Kopya[0]: " + kopya1[0]); // 999
// Scope Örnekleri
class ScopeOrnegi
{
// Class scope (sınıf seviyesi)
static int globalSayi = 100;
static void Metot1()
{
// Local scope (metot seviyesi)
int yerelSayi = 50;
Console.WriteLine(globalSayi); // ✅ Erişilebilir
Console.WriteLine(yerelSayi); // ✅ Erişilebilir
}
static void Metot2()
{
Console.WriteLine(globalSayi); // ✅ Erişilebilir
// Console.WriteLine(yerelSayi); // ❌ HATA! Tanımsız
int yerelSayi = 75; // Farklı scope, farklı değişken
}
}
class Kisi
{
private int yas; // Dışarıdan doğrudan erişilemez (gizli veri)
public int Yas // Erişime izin verilen özellik (Property)
{
get { return yas; } // Değeri okumak için
set
{
if (value >= 0) // Negatif yaş girilmesini engellemek için kontrol
yas = value; // Kurala uygunsa değeri atar
}
}
}
class Canli // Temel sınıf (Base Class)
{
public void NefesAl() { } // Tüm canlılar için ortak davranış
}
class Insan : Canli // Canli sınıfından miras alan Insan sınıfı
{
public void Konus() { } // İnsana özgü ekstra davranış
}
class Hayvan // Temel sınıf
{
public virtual void SesCikar() // Ezilebilir (override edilebilir) metot
{
Console.WriteLine("Ses çıkarıyor"); // Varsayılan davranış
}
}
class Kedi : Hayvan // Hayvan sınıfından türeyen Kedi
{
public override void SesCikar() // Temel metodu kendine göre değiştirir
{
Console.WriteLine("Miyav"); // Kedinin kendi sesi
}
}
abstract class Arac // Soyut sınıf (tek başına nesne üretilemez)
{
public abstract void Calistir(); // Gövdesi olmayan, alt sınıfların doldurmak zorunda olduğu metot
}
class Ogrenci // Öğrenci sınıfı
{
public string Ad; // Öğrenci adını tutan alan
public Ogrenci(string ad) // Yapıcı metot (Sınıf ismiyle aynıdır)
{
Ad = ad; // Nesne oluşurken adı direkt atar
}
}
interface IOdeme // Sözleşme (arayüz) tanımı
{
void Ode(); // Uygulayan sınıfın mutlaka yapması gereken iş
}
class Motor { } // Motor sınıfı
class Araba // Araba sınıfı
{
Motor motor = new Motor(); // Araba, içinde bir Motor nesnesi barındırır (Sahiplik)
}
using System; // Console sınıfını kullanabilmek için gerekli
class Hasta // Hastayı temsil eden sınıf
{
public string Ad; // Hastanın adını tutmak için
public string Soyad; // Hastanın soyadını tutmak için
public string TcNo; // Hastanın TC kimlik numarasını tutmak için
public void BilgiYazdir() // Hasta bilgilerini ekrana yazdıran metot
{
Console.WriteLine("Hasta: " + Ad + " " + Soyad); // Hastanın adı ve soyadı
Console.WriteLine("TC No: " + TcNo); // Hastanın TC numarası
}
}
class Doktor // Doktoru temsil eden sınıf
{
public string Ad; // Doktorun adını tutmak için
public string Soyad; // Doktorun soyadını tutmak için
public string Brans; // Doktorun uzmanlık alanını tutmak için
public void BilgiYazdir() // Doktor bilgilerini ekrana yazdıran metot
{
Console.WriteLine("Doktor: " + Ad + " " + Soyad); // Doktorun adı ve soyadı
Console.WriteLine("Branş: " + Brans); // Doktorun branşı
}
}
class Randevu // Randevuyu temsil eden sınıf
{
public Hasta HastaBilgisi; // Randevuya ait hasta nesnesi
public Doktor DoktorBilgisi; // Randevuya ait doktor nesnesi
public DateTime Tarih; // Randevu tarihini tutmak için
public void RandevuYazdir() // Randevu bilgilerini ekrana yazdıran metot
{
Console.WriteLine("\n--- RANDEVU BİLGİLERİ ---"); // Başlık yazdırmak için
HastaBilgisi.BilgiYazdir(); // Hasta nesnesinin bilgilerini yazdırmak için
DoktorBilgisi.BilgiYazdir(); // Doktor nesnesinin bilgilerini yazdırmak için
Console.WriteLine("Randevu Tarihi: " + Tarih); // Randevu tarihini göstermek için
}
}
class Program // Programın ana sınıfı
{
static void Main(string[] args) // Programın çalışmaya başladığı ana metot
{
Hasta hasta = new Hasta(); // Hasta sınıfından bir nesne oluşturmak için
Console.Write("Hasta Adı: "); // Kullanıcıdan hasta adı almak için
hasta.Ad = Console.ReadLine(); // Girilen değeri hasta nesnesine atamak için
Console.Write("Hasta Soyadı: "); // Kullanıcıdan hasta soyadı almak için
hasta.Soyad = Console.ReadLine(); // Girilen değeri hasta nesnesine atamak için
Console.Write("TC Kimlik No: "); // Kullanıcıdan TC numarası almak için
hasta.TcNo = Console.ReadLine(); // Girilen TC numarasını atamak için
Doktor doktor = new Doktor(); // Doktor sınıfından bir nesne oluşturmak için
Console.Write("\nDoktor Adı: "); // Kullanıcıdan doktor adı almak için
doktor.Ad = Console.ReadLine(); // Girilen değeri doktor nesnesine atamak için
Console.Write("Doktor Soyadı: "); // Kullanıcıdan doktor soyadı almak için
doktor.Soyad = Console.ReadLine(); // Girilen değeri doktor nesnesine atamak için
Console.Write("Doktor Branşı: "); // Kullanıcıdan doktor branşı almak için
doktor.Brans = Console.ReadLine(); // Girilen branşı atamak için
Randevu randevu = new Randevu(); // Randevu sınıfından bir nesne oluşturmak için
randevu.HastaBilgisi = hasta; // Randevuya hasta nesnesini bağlamak için
randevu.DoktorBilgisi = doktor; // Randevuya doktor nesnesini bağlamak için
randevu.Tarih = DateTime.Now; // Randevu tarihini şu an olarak ayarlamak için
randevu.RandevuYazdir(); // Tüm randevu bilgilerini yazdırmak için
}
}
using System; // Console işlemleri için gerekli
using System.Collections.Generic; // List yapısını kullanabilmek için
class Urun // Satılan ürünü temsil eden sınıf
{
public string Ad; // Ürün adını tutmak için
public decimal Fiyat; // Ürün fiyatını tutmak için (para işlemleri)
public void BilgiYazdir() // Ürün bilgilerini ekrana yazdıran metot
{
Console.WriteLine("Ürün: " + Ad); // Ürün adını göstermek için
Console.WriteLine("Fiyat: " + Fiyat + " TL"); // Ürün fiyatını göstermek için
}
}
class Sepet // Alışveriş sepetini temsil eden sınıf
{
public List Urunler; // Sepetteki ürünleri tutan liste
public Sepet() // Sepet nesnesi oluşturulurken çalışan constructor
{
Urunler = new List(); // Ürün listesini boş olarak başlatmak için
}
public void UrunEkle(Urun urun) // Sepete ürün ekleyen metot
{
Urunler.Add(urun); // Gelen ürünü listeye eklemek için
Console.WriteLine(urun.Ad + " sepete eklendi."); // Bilgilendirme mesajı
}
public decimal ToplamTutarHesapla() // Sepetteki ürünlerin toplam fiyatını hesaplayan metot
{
decimal toplam = 0; // Toplam tutarı tutacak değişken
foreach (Urun u in Urunler) // Sepetteki her ürünü tek tek gezmek için
{
toplam += u.Fiyat; // Her ürünün fiyatını toplama eklemek için
}
return toplam; // Hesaplanan toplam tutarı geri döndürmek için
}
public void SepetiYazdir() // Sepet içeriğini ekrana yazdıran metot
{
Console.WriteLine("\n--- SEPET İÇERİĞİ ---"); // Başlık yazdırmak için
foreach (Urun u in Urunler) // Sepetteki tüm ürünleri yazdırmak için
{
Console.WriteLine("- " + u.Ad + " (" + u.Fiyat + " TL)");
}
Console.WriteLine("Toplam: " + ToplamTutarHesapla() + " TL"); // Sepet toplamı
}
}
class Siparis // Siparişi temsil eden sınıf
{
public Sepet SepetBilgisi; // Siparişe ait sepet nesnesi
public DateTime Tarih; // Sipariş tarihini tutmak için
public void SiparisYazdir() // Sipariş bilgilerini yazdıran metot
{
Console.WriteLine("\n=== SİPARİŞ BİLGİLERİ ==="); // Başlık yazdırmak için
SepetBilgisi.SepetiYazdir(); // Sepet içeriğini yazdırmak için
Console.WriteLine("Sipariş Tarihi: " + Tarih); // Sipariş tarihini göstermek için
}
}
class Program // Programın ana sınıfı
{
static void Main(string[] args) // Programın başladığı ana metot
{
Urun urun1 = new Urun(); // Birinci ürün nesnesi oluşturmak için
urun1.Ad = "Laptop"; // Ürün adını atamak için
urun1.Fiyat = 25000; // Ürün fiyatını atamak için
Urun urun2 = new Urun(); // İkinci ürün nesnesi oluşturmak için
urun2.Ad = "Mouse"; // Ürün adını atamak için
urun2.Fiyat = 500; // Ürün fiyatını atamak için
Sepet sepet = new Sepet(); // Sepet nesnesi oluşturmak için
sepet.UrunEkle(urun1); // Birinci ürünü sepete eklemek için
sepet.UrunEkle(urun2); // İkinci ürünü sepete eklemek için
Siparis siparis = new Siparis(); // Sipariş nesnesi oluşturmak için
siparis.SepetBilgisi = sepet; // Siparişe sepeti bağlamak için
siparis.Tarih = DateTime.Now; // Sipariş tarihini şu an olarak ayarlamak için
siparis.SiparisYazdir(); // Sipariş bilgilerini ekrana yazdırmak için
}
}