İçeriğe geç

Menü

Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

C# Sınıf ve Nesne Nasıl Kullanılır? Basit Örnekle Açıklama

c-sharp-sinif-ve-nesne-nasil-kullanilir-basit-ornekle-aciklama
Bu yazıda neler var?
  1. C# sınıf ve nesne nasıl kullanılır?
  2. C# sınıfının temel parçaları ne işe yarar?
  3. Kitap sınıfıyla çalışan konsol uygulaması nasıl yazılır?
  4. İki değişken aynı nesneyi gösterdiğinde ne olur?
  5. C# sınıf ve nesne kullanımını nasıl kontrol edebilirsin?

C# sınıf ve nesne nasıl kullanılır sorusunun kısa yanıtı şudur: Önce class ile bir türün hangi verileri taşıyacağı ve hangi davranışları sunacağı tanımlanır. Ardından new anahtar sözcüğüyle bu sınıftan bir nesne oluşturulur; property değerleri okunur veya değiştirilir, metotlar çağrılır.

Sınıf ve nesne arasındaki temel fark, sınıfın bir tanım, nesnenin ise program çalışırken kullanılan somut bir örnek olmasıdır. Bu ayrım, C# kodunda hangi satırın yapı oluşturduğunu, hangi satırın bu yapıyı kullandığını anlamayı kolaylaştırır.

C# sınıf ve nesne nasıl kullanılır?

Kullanım sırası üç adım olarak düşünülebilir: Önce sınıf bildirimiyle yapı tanımlanır, sonra new ile nesne oluşturulur, son olarak nesnenin üyeleri üzerinden veri ve davranış kullanılır. Örneğin bir sınıf, bir öğrencinin adını ve selam verme davranışını tarif edebilir. Oluşturulan her nesne ise bu tanımı kendi değerleriyle kullanır.

Bunu bir ev planı ve o plana göre yapılmış ev gibi düşünebilirsin. Sınıf bir planı tanımlar, nesne bu plana göre oluşturulmuş somut örnektir.

class Ogrenci ifadesi bir sınıf bildirimidir ve tek başına belirli bir öğrenci nesnesi oluşturmaz. Bu ifade, oluşturulacak nesnelerin hangi özelliklere ve davranışlara sahip olacağını tanımlar. Ogrenci ogrenci = new Ogrenci("Deniz"); satırında ise program çalışırken kullanılabilir bir nesne meydana gelir.

Nesne, new anahtar sözcüğüyle bu sınıftan oluşturulan örnektir. Bu nesne üzerinden property değerlerine ulaşabilir, metotları çağırabilir ve sınıfta tanımlanan davranışları çalıştırabilirsin. İlerleyen örneklerde class bildirimi, property, constructor ve metot arasındaki görev ayrımı daha net görülebilir. Nesnenin bir değişkene nasıl bağlandığını anlamak da referans davranışını kavramaya yardımcı olur.

C# temelleriyle ilgili başka anlatımları programlama ve yazılım konularındaki blog yazıları arasında inceleyebilirsin.

C# sınıfının temel parçaları ne işe yarar?

C# sınıfının temel parçaları ne işe yarar?

Bir sınıfın temel parçalarını görevlerine göre ayırmak, kodu okurken neyin veri, neyin başlangıç hazırlığı, neyin davranış olduğunu görmeni sağlar. class türün çerçevesini oluşturur. Alan yani field, veriyi doğrudan tutan üyedir. Property, get ve set erişimleriyle bu verinin okunma ve değiştirilme biçimini tanımlar. Constructor nesne oluşturulurken başlangıç değerlerini hazırlar. Metot ise yapılacak işi kodlar.

Görev Kod karşılığı Kullanım amacı
class class Ogrenci Veri ve davranışların ait olduğu türü tanımlar.
alan private string ad; Veriyi sınıfın içinde doğrudan saklar.
property public string Ad { get; set; } Değere erişme ve yeni değer atama biçimini belirler.
constructor public Ogrenci(string ad) Nesne oluşturulurken başlangıç durumunu hazırlar.
metot public void SelamVer() Nesnenin gerçekleştirdiği davranışı tanımlar.

Aşağıdaki kısa konsol uygulamasında bu parçalar aynı sınıf üzerinde birlikte çalışır:

using System;

class Ogrenci
{
    private string ad;

    public string Ad
    {
        get { return ad; }
        set { ad = value; }
    }

    public Ogrenci(string ad)
    {
        Ad = ad;
    }

    public void SelamVer()
    {
        Console.WriteLine("Merhaba, " + Ad);
    }
}

class Program
{
    static void Main()
    {
        Ogrenci ogrenci = new Ogrenci("Deniz");
        ogrenci.SelamVer();
    }
}

Beklenen çıktı:

Merhaba, Deniz
  1. class Ogrenci, öğrenci nesnelerinin genel yapısını tanımlar.
  2. ad alanı, öğrencinin adını sınıf içinde doğrudan saklar. private olduğu için bu alana sınıfın dışından doğrudan erişilmez.
  3. Ad property’si, get ile değeri okumayı ve set ile yeni değer vermeyi sağlar. Böylece veriye erişim için daha düzenli bir arayüz sunar.
  4. Ogrenci(string ad) constructor’ı, nesne oluşturulurken çalışır ve başlangıç adını belirler. new Ogrenci("Deniz") ifadesi hem nesneyi oluşturur hem de constructor’ı çağırır.
  5. SelamVer() metodu, nesnenin davranışını gerçekleştirir. ogrenci.SelamVer() satırı bu davranışı çalıştırır.

Kitap sınıfıyla çalışan konsol uygulaması nasıl yazılır?

Kitap sınıfıyla çalışan konsol uygulaması nasıl yazılır?

Bir sınıfın nasıl çalıştığını görmek için kitap bilgilerini tutan ve kitabın ödünç durumunu değiştiren küçük bir konsol uygulaması yazabiliriz. Aşağıdaki örnekte Kitap sınıfı başlık, yazar ve ödünç alınma bilgilerini saklar.

using System;

class Kitap
{
    public string Baslik { get; }
    public string Yazar { get; }
    public bool OduncAlindi { get; private set; }

    public Kitap(string baslik, string yazar)
    {
        Baslik = baslik;
        Yazar = yazar;
        OduncAlindi = false;
    }

    public void OduncAl()
    {
        OduncAlindi = true;
    }

    public void BilgiYazdir()
    {
        string durum = OduncAlindi ? "Ödünçte" : "Rafta";
        Console.WriteLine($"Başlık: {Baslik} | Yazar: {Yazar} | Durum: {durum}");
    }
}

class Program
{
    static void Main()
    {
        Kitap kitap = new Kitap("Simyacı", "Paulo Coelho");

        kitap.BilgiYazdir();
        kitap.OduncAl();
        kitap.BilgiYazdir();
    }
}

Beklenen çıktı:

Başlık: Simyacı | Yazar: Paulo Coelho | Durum: Rafta
Başlık: Simyacı | Yazar: Paulo Coelho | Durum: Ödünçte
  1. Class bildirimi: class Kitap satırı, kitap nesnelerinin hangi özelliklere ve davranışlara sahip olacağını tanımlar.
  2. Property'ler: Baslik ve Yazar kitapla ilgili metin bilgilerini tutar. OduncAlindi ise kitabın ödünç alınıp alınmadığını true veya false olarak saklar.
  3. Constructor: Kitap metodu, nesne oluşturulurken başlık ve yazar bilgilerini alır. Ödünç durumu da başlangıçta false yapılır. Böylece yeni kitap rafta kabul edilir.
  4. new ile nesne oluşturma: new Kitap(...) ifadesi, Kitap sınıfından gerçek bir nesne oluşturur ve constructor'ı çalıştırır.
  5. Nokta operatörü: kitap.BilgiYazdir() ve kitap.OduncAl() ifadelerinde nokta operatörü, nesnenin metotlarına erişmek için kullanılır.
  6. Durum değişimi: İlk bilgi yazdırıldığında OduncAlindi değeri false olduğu için durum Rafta görünür. OduncAl çağrısından sonra değer true olur ve ikinci çıktıda Ödünçte yazdırılır.

İki değişken aynı nesneyi gösterdiğinde ne olur?

Bir nesne oluşturduktan sonra başka bir değişkeni ilk değişkene eşitleyebilirsin. Bu durumda ikinci değişken yeni bir nesne oluşturmaz; ilk değişkenin gösterdiği aynı nesneye başvurur.

Kitap kitap1 = new Kitap("Simyacı", "Paulo Coelho");
Kitap kitap2 = kitap1;

kitap2.OduncAl();
kitap1.BilgiYazdir();

Beklenen çıktı:

Başlık: Simyacı | Yazar: Paulo Coelho | Durum: Ödünçte

Bu örnekte new yalnızca bir kez kullanılır. kitap2 = kitap1 ataması, kitap2 için yeni bir kitap oluşturmaz. İki değişken de aynı kitabı gösterdiği için kitap2 üzerinden yapılan OduncAl çağrısı, kitap1 üzerinden gözlemlenen durumu da değiştirir.

İki ayrı nesne oluşturmak istersen new anahtar sözcüğünü iki kez kullanmalısın:

Kitap kitap1 = new Kitap("Simyacı", "Paulo Coelho");
Kitap kitap2 = new Kitap("Simyacı", "Paulo Coelho");

Bu durumda kitapların bilgileri aynı olsa bile nesneler birbirinden ayrıdır. kitap2.OduncAl() çağrıldığında kitap1 nesnesinin ödünç durumu değişmez.

C# sınıf ve nesne kullanımını nasıl kontrol edebilirsin?

Kodunu denetlerken yalnızca derlenip derlenmediğine bakma. Sınıfın modeli tanımladığını, nesnenin bu modelden oluşturulduğunu ve metotların nesnenin durumunu değiştirdiğini şu sırayla kontrol edebilirsin:

  1. Sınıf bildirimini incele: class Kitap bildirimi, nesnenin sahip olacağı özellikleri ve davranışları tanımlayan modeli göstermelidir. Sınıf bildirimi tek başına nesne oluşturmaz.
  2. Property değerlerini doğrula: Ad ve SayfaSayisi gibi property'lerin, constructor'a veya sonradan yapılan atamalara verilen doğru değerleri taşıdığını kontrol et.
  3. Constructor çağrısını kontrol et: new Kitap(...) ifadesi constructor'ı çağırmalı ve başlangıç değerlerini nesneye aktarmalıdır.
  4. Metotları nokta operatörüyle çalıştır: kitap.SayfaEkle() gibi çağrılarda metot, işlem yapılacak nesnenin adından sonra nokta operatörüyle kullanılmalıdır.
  5. İşlem öncesini ve sonrasını yazdır: Property değerlerini metot çalışmadan önce ve sonra konsola yazdır. Beklenen değişiklik çıktı üzerinde görünmelidir.
  6. Aynı nesne ile yeni nesneyi ayırt et: Bir değişkeni ikinci değişkene atadığında iki değişken aynı nesneyi gösterir ve yapılan değişiklik iki başvurudan da görülebilir. new Kitap(...) ile oluşturulan nesne ise ayrı bir nesnedir; farklı değerler vererek çıktıda ayırt edebilirsin.

Takıldığın noktayı sınıf, property, constructor, metot ve referans kavramlarına ayırarak inceleyebilir, ardından ücretsiz yazılım bilgi testleri merkezi üzerinden temel bilgilerini sorularla kontrol edebilirsin. Kısaca, class modeli tanımlar, new constructor aracılığıyla nesne oluşturur, property'ler nesnenin durumunu taşır ve metotlar nokta operatörüyle çağrılarak bu duruma davranış kazandırır.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara