Anasayfa / C# WINDOWS FORM / C# Windows Form’da Sınıflar ve Nesneler

C# Windows Form’da Sınıflar ve Nesneler

C# ve Windows Forms ile yazılım geliştirmeye başladığınızda ilk başlarda her şeyi formun kod ekranına, butonların içine yazmak kolay gelebilir. Ancak uygulamanız büyüdükçe, örneğin yüzlerce müşteriyi veya binlerce ürünü takip etmeniz gerektiğinde kodlarınız yönetilemez bir karmaşaya dönüşür.

C# WINDOWS FORM SINIFLAR VE NESNELER EĞİTİM VİDEOMUZ İÇİN TIKLAYIN

İşte bu karmaşayı önlemek için 1960’lı yılların sonunda ortaya çıkan Nesne Tabanlı Programlama (NTP) veya dünyaca bilinen adıyla OOP (Object Oriented Programming) yaklaşımı geliştirilmiştir. NTP, dünyada var olan her şeyin yazılım içinde modellenmesini, daha düzenli ve tekrar kullanılabilir kodlar yazılmasını amaçlar.

Bu yazımızda, C# programlama dilinin kalbi olan Sınıf (Class) ve Nesne (Object) kavramlarını, bunların Windows Forms projelerinde nasıl kullanıldığını ve gerçek hayattan örneklerle nasıl modellendiğini detaylıca öğreneceğiz.

Nesne Tabanlı Programlamanın (OOP) Temel Prensipleri Nelerdir?

Bir programlama dilinin nesne tabanlı olabilmesi için asgari düzeyde şu dört prensibi desteklemesi gerekir:

  1. Soyutlama (Abstraction): Karmaşıklığın gizlenmesidir. Bir arabanın gaz pedalına bastığınızda hızlandığını bilirsiniz, arka plandaki motor mekaniğini bilmenize gerek yoktur.
  2. Kapsülleme (Encapsulation): Özel ve hassas bilgilerin dış dünyadan gizlenmesi, sadece izin verilen kısımların dışarıya açılmasıdır.
  3. Kalıtım (Inheritance): Var olan özelliklerin başka bir yapıya aktarılmasıdır. Örneğin “Van Kedisi”, genel “Kedi” türünün tüm özelliklerini (dört ayaklı olmak gibi) miras alır.
  4. Çok Biçimlilik (Polymorphism): Farklı türlerin ortak bir eylemi farklı şekillerde yapmasıdır. Hayvanların farklı sesler çıkarması ancak hepsinin bir “ses çıkarma” işlevinin olması buna örnektir.

Sınıf (Class) Nedir?

Dünyaya baktığımızda her şeyin belirli özellikleri ve işlevleri (davranışları) olduğunu görürüz. Örneğin bir cep telefonunun rengi, markası, boyutu gibi özellikleri; arama yapma, mesaj atma gibi işlevleri vardır.

Yazılımda Sınıf (Class), bu özellik ve işlevleri tanımlamak için kullandığımız bir taslaktır (şablondur). Konuyu daha iyi anlamak için bir bina inşasını düşünün: Sınıf, bir evin kâğıt üzerindeki mimari planı (projesi) gibidir. Kâğıt üzerindeki bir evde oturamazsınız, o sadece evin kaç odası olacağını, kapısının nerede olacağını belirten bir tasarımdır.

C# dilinde basit bir sınıf şu şekilde tanımlanır:

public class Ogrenci
{
    // Öğrencinin özellikleri ve işlevleri buraya yazılır.
}

Nesne (Object) Nedir?

Eğer sınıf bir ev planıysa, Nesne (Object) bu plandan yola çıkılarak inşa edilmiş gerçek evdir. Mimari plandan (sınıftan) istediğiniz kadar gerçek ev (nesne) üretebilirsiniz. Yazılımda da durum böyledir; bir sınıftan istediğiniz sayıda farklı nesne türetebilirsiniz. Bu türetme işlemine “örnek oluşturma” (instance) denir.

C# dilinde bir sınıftan yeni bir nesne üretmek için new anahtar kelimesi kullanılır.

// Ogrenci sınıfından 'ogr1' adında yeni ve gerçek bir nesne üretiyoruz.
Ogrenci ogr1 = new Ogrenci();

Sınıfların Temel Yapı Taşları

Bir sınıf oluşturduğumuzda içerisine veri tutacak değişkenler ve işlem yapacak metotlar ekleriz. Sınıfın içindeki bu yapılara erişimi kontrol etmek için Erişim Belirleyiciler (Access Modifiers) kullanılır.

  • public (Genel): Kısıtlama yoktur, programın her yerinden bu koda erişilebilir.
  • private (Gizli): En katı kuraldır, sadece o sınıfın içinden erişilebilir. Bir ögeye erişim belirleyici yazmazsanız sistem onu otomatik olarak private kabul eder.

Şimdi sınıfın üyelerine yakından bakalım:

1. Alanlar (Fields) ve Özellikler (Properties)

Sınıf içinde tanımlanan değişkenlere Alan (Field) denir. Örneğin öğrencinin adını tutacağımız değişken bir alandır. Ancak güvenlik (Kapsülleme) gereği, alanlar genellikle dışarıya kapatılır (private yapılır) ve bu alanlara güvenli yoldan veri aktarmak için Özellikler (Properties) kullanılır. Özellikler, veriyi okumak için get ve veriyi yazmak (düzenlemek) için set adında iki alt metot barındırır.

public class Ogrenci
{
    // Gizli Alan (Field)
    private int yas;

    // Dışarıya Açık Özellik (Property)
    public int Yas
    {
        get { return yas; } // Değeri okurken çalışır
        set
        {
            // Mantıksız bir yaş girilmesini engelliyoruz (Kapsülleme)
            if (value <= 0)
                MessageBox.Show("Yaş 0 veya daha küçük olamaz!");
            else
                yas = value;
        }
    }
}

2. Metotlar (Methods – İşlevler)

Metotlar, bir sınıfın yapabileceği eylemleri, işleri ve operasyonları tanımlayan kod bloklarıdır. Sadece program tarafından çağrıldıklarında çalışırlar.

3. Yapıcı Metotlar (Constructors)

Yapıcı metotlar, nesneler new kelimesiyle ilk oluşturulduğu anda (inşa edilirken) otomatik olarak çalışan çok özel metotlardır. Sınıf ile tamamen aynı isme sahip olmak zorundadırlar ve geriye değer döndürmezler (void veya int gibi bir dönüş tipi yazılamaz). Genellikle nesne ilk yaratılırken varsayılan değerleri atamak için kullanılırlar.

Windows Forms’ta Sınıf ve Nesne Mantığı

Windows Forms uygulaması yaparken ekrana sürükleyip bıraktığınız her şey aslında arka planda birer Sınıf ve Nesnedir! Örneğin, .NET kütüphanesinde Button adında bir sınıf vardır. Siz Toolbox’tan (Araç Kutusu) formunuza bir buton sürüklediğinizde, Visual Studio arka planda sizin için otomatik olarak Button btnKaydet = new Button(); şeklinde bir nesne üretir. Aynı şekilde formunuzun kendisi de (Form1), .NET içindeki Form sınıfından türetilmiş bir nesnedir.

Örnek Uygulama: “Müşteri” Sınıfı Oluşturmak

Tüm bu teorik bilgileri C# Windows Forms’ta somutlaştıralım. Formumuzda kullanıcının veri gireceği Textbox’lar ve bir “Kaydet” butonu olsun. Kayıt işlemini doğrudan butonun içine yazmak yerine profesyonelce bir “Musteri” sınıfı tasarlayalım.

1. Adım: Sınıfımızı Oluşturuyoruz Projenize sağ tıklayıp “Add -> Class” diyerek yeni bir sınıf dosyası açın ve adını Musteri.cs koyun.

public class Musteri
{
    // Özellikler (Properties)
    public string Ad { get; set; }  // Kısa yoldan özellik tanımlama
    public string Soyad { get; set; }
    public string Telefon { get; set; }

    // Yapıcı Metot (Constructor) - Nesne ilk yaratıldığında çalışır
    public Musteri()
    {
        Ad = "Belirtilmedi";
        Soyad = "Belirtilmedi";
        Telefon = "Belirtilmedi";
    }

    // Metot (Method - İşlev) - Müşteriyi sisteme kaydeder
    public string BilgileriGetir()
    {
        return "Kayıt Başarılı! \nAd Soyad: " + Ad + " " + Soyad + "\nTelefon: " + Telefon;
    }
}

2. Adım: Sınıfımızı Formda Nesneye Çevirip Kullanıyoruz Formunuza geri dönün. Textbox’ları (txtAd, txtSoyad, txtTelefon) ve “Kaydet” butonunu (btnKaydet) ekleyin. Butona çift tıklayarak Click olayına şu kodları yazın:

private void btnKaydet_Click(object sender, EventArgs e)
{
    // 1. Musteri sınıfından 'yeniMusteri' adında bir NESNE üretiyoruz (new kelimesi ile)
    Musteri yeniMusteri = new Musteri();

    // 2. Formdaki Textbox kutularından aldığımız verileri, Nesnemizin özelliklerine aktarıyoruz
    yeniMusteri.Ad = txtAd.Text;
    yeniMusteri.Soyad = txtSoyad.Text;
    yeniMusteri.Telefon = txtTelefon.Text;

    // 3. Nesnemizin içindeki metodu çağırıp, sonucu kullanıcıya gösteriyoruz
    string mesaj = yeniMusteri.BilgileriGetir();
    MessageBox.Show(mesaj);
}

Sonuç

C# ve Windows Forms kullanarak geliştirdiğiniz projelerde kodlarınızı “Sınıflar” (Classes) halinde parçalara bölmek, nesne tabanlı programlamanın altın kuralıdır. Müşteriler, Ürünler, Siparişler gibi kavramların her birini birer sınıf olarak tasarlayıp, ihtiyaç duyduğunuzda bu sınıflardan “new” kelimesi ile nesneler üreterek çalışmak, programınızın kalitesini artırır. Gördüğünüz gibi, sürükleyip bıraktığınız bir TextBox bile aslında .NET geliştiricileri tarafından önceden yazılmış bir sınıftan türetilen bir nesnedir. Kendi sınıflarınızı yazdıkça programlamanın asıl gücünü ve esnekliğini çok daha iyi kavrayacaksınız. İyi kodlamalar dileriz!

Etiketlendi:

Cevap bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

DERSLER