İlginizi Çekebilir
C# Sınıf ve Nesne Tanımlama
  1. Ana Sayfa
  2. C#
  3. C# Class ve Nesne Kavramları

C# Class ve Nesne Kavramları

Nesneye yönelik programlama kavramının temelini attığımız C# OOP Nedir içeriğini paylaştıktan sonra C# Class ve Nesne Kavramları hakkında detaylı ve tanımlayıcı teorik bilgilerin yer alacağı bir içerik yayınlamam gerektiğini düşündüm.

Binayı inşa ederken temellerimizi ne kadar sağlam oluşturduğumuz önemlidir. Bu yüzden eğer nesneye yönelik programlama konusunda bir fikriniz yoksa, C# OOP Nedir emrecelen.com.tr/c-sharp-oop-nedir/ içeriğime bu adresten ulaşarak gerekli teorik bilgiyi edinebilirsiniz.

C# Class ve Nesne Kavramları Nedir?

C# Class ve Nesne Kavramları, birbirine bağlı, tamamen bir bütünü temsil eden, nesneye yönelik programlamanın ilk adımıdır. Bu ayrılmaz ikili olarak programlarımızın başrolünde bulunan class ve nesne tanımlamasını, ayrımını yapacağımız görsele ve teorik bilgilere aşağıda yer alan başlıklar altında inceleyebilirsiniz.

C# Class ve Nesne Kavramları
C# Nesne ve Sınıf Kavramları

Görseli incelediğiniz zaman aklınızda bazı şeyler şekillenmeye başlamıştır. Eğer bu görsel, durumları daha da karışık bir hale getirdiyse aşağıdaki başlıklarda paylaşacağım C# Class ve Nesne kavramları içerisindeki örnekler ile görseli daha iyi anlamlandırabileceğinizi söyleyebilirim. 👌🏻

C# Nesne Nedir?

C# Nesne Nedir, doğada yer alan her şey bir nesnedir. Mahallemizin parkında yer alan kuşlar, kediler, köpekler ya da evimizde bulunan pencere, yolda gördüğümüz araba gibi birçok şey nesnedir.

Olayın biraz daha teorik kısmına girecek olursak, bir şeyi nesne olarak tanımlayabilmemiz için içerisinde durum ve davranış olmak üzere iki temel özelliği barındırıyor olması gerekir.

Bu iki kavramdan ilk olarak durum özelliğini ele alalım ve bir örnek üzerinden durum kavramının ne olduğuna göz atalım. C# Nesneye yönelik programlamada nesnenin durum özelliğinden bahsederken zaman zaman attribute (özellik) kavramı olarak telaffuz gerçekleştirebiliriz.

Attribute telaffuzundan da anlaşılacağı üzere durumlar nesnenin özelliklerini simgeler. Bunu bir örnek üzerinden ele almak için bir araba düşünelim. Arabanın sahip olduğu markası, motor hacmi, rengi ve üretim yılı gibi kavramlar arabanın özelliklerini simgelediği için C# Nesneleri üzerinde bu kavramlara durum deriz.

Durum kavramının kafamızda şekillendiğini düşünüyorum. İkinci kavram olarak ise davranışı ele alalım. Bu kavramı anlatırken yine araba üzerinden yola çıkarak örneklendireyim. Arabanın hızlanması, yavaşlaması, vites değiştirmesi ya da kaza yapması gibi olaylar ise nesnenin davranışını belirtmektedir.

Konuyu toparlayacak olursak bir duruma ve davranışa sahip olan her şey programlarımız içerisinde nesne olabilir. Örnek olarak verdiğimiz Arabamızın durumları yani özellikleri, C# OOP kavramında değişkenleri simgeler. Davranışlar olarak bahsettiğimiz ikinci kavram ise metotları simgeler. Eğer, Metot konusu hakkında bir fikrin bulunmuyorsa daha önce paylaşımını yaptığım C# Metot Nedir isimli içeriğime emrecelen.com.tr/c-sharp-metot-nedir/ bu adresten göz atabilirsin.

Eğer davranış ve durum kavramlarını aklımızda bir kalıp içerisine oturtabildiysek, C# Nesne Nedir sorusuna gerekli cevabı vermişiz demektir. C# Nesne nedir sorusunun cevabı konusunda hala aklınızda bazı soru işaretleri varsa aşağıda yer alan yorum yap kısmından, aklınızdaki soruları benimle paylaşabilirsiniz.

C# Nesne Tanımlama Nasıl Yapılır?

C# Nesne Tanımlama, gerçekten dikkat etmemiz ve ihtiyaçlarımıza göre oluşturmamız gereken programlarımızın referans değerlerini oluşturduğumuz bir sistemdir.

C# Stack ve Heap Ayrımı
C# Stack ve Heap Ayrımı

Daha önce veri tipleri ve değişken tanımlaması üzerinde kullandığım görsel çalışmasını hatırlayalım. C# nesne tanımlaması yaparken oluşturduğumuz her bir nesne, bellek üzerinde farklı bir alanda muhafıza edilir. Bu muhafıza edilen alana heap adı verilir.

🚨 Oluşturmuş olduğumuz nesnelere daha sonra istediğimiz yerden referansları ile ulaşım sağlayabilir ve içerisindeki durum ve davranışları kullanabiliriz. Burada dikkat etmemiz gereken durum oluşturmuş olduğumuz nesneler bellek üzerinde bir yer kapladığı için gereksiz ve fazla nesne oluşturma işlemi sonucunda Exception hataları ile karşılaşabiliriz.

C# nesne tanımlaması için ise aşağıdaki adımları izleyerek tek satırlık kod dizisi ile nesne tanımlaması gerçekleştirebiliriz.

  • İlk aşama olarak nesneyi tanımlayacağımız ilgili sınıf içerisine giriş gerçekleştirelim.
  • Sınıf içerisine giriş yaptıktan sonra oluşturacağımız nesnenin sınıf ismini, daha sonra oluşturacağımız nesneyi kullanırken kullanacağımız nesne adını belirleyelim.
  • Bu işlemleri gerçekleştirdikten sonra bellekte bir yer kaplaması ve nesne oluşması için new anahtar sözcüğü ile tanımlama işlemimizi bitirelim.

Bu aşamaları uyguladıktan sonra oluşturmuş olduğumuz örnek kod parçacığı aşağıdaki gibi olmalıdır:

SinifIsmi nesneAdi = new SinifIsmi();

C# Class Nedir?

Projelerimizi gerçekleştirirken çeşitli özelliklerini, çözmemiz gereken problemlerini ve diğer işlemleri parçalara bölerek ilerlemek isteriz. Bu parçaları daha sonra birleştirerek projemizi bir bütün haline getiririz.

C# Class Nedir sorusunun da cevabı aslında yukarıdaki örnekleme üzerinde gizli. C# Class, programlarımızın her bir aşaması için çeşitli durum ve özelliklerin yer aldığı, parçalayarak bir bütün elde etmeyi amaçladığımız bir görev kontrol sistemidir.

Teorik bilgileri edindiğimize göre C# Class oluşturma sürecinin nasıl gerçekleştiğine aşağıda yer alan başlıktaki aşamalara göz atarak, sürecin işleyişi konusunda fikir sahibi olabiliriz.

C# Class Oluşturma

Projelerimizin temel iskelet yapısını oluşturan Class yapısını oluşturmak için aşağıda yer alan C# Class Oluşturma maddelerini uygularız.

  • Projemizin dosyası içerisine sınıfımızın sahip olmasını istediğimiz .cs uzantılı bir dosya tanımlayarak işlemimize başlayalım. (Örnek: cSharpClassOlusturma.cs / sinifAdi.cs)
  • Sınıfımızı oluşturduktan sonra kod editörümüzü açarak C# Class oluşturma işlemi için gerekli olan class anahtar kelimesini oluşturalım.
  • Bu anahtar kelimesini kullanırken sınıfımıza bir erişim seviyesi belirleyebileceğimiz gibi çeşitli generic tanımlamalarda gerçekleştirebiliriz.

Teorik olarak 3 maddeden oluşan C# Class oluşturma işlemimizde yazmamız gereken kod satırı ise daha azdır. Bir sınıf oluşturmak için yazmamız gereken anahtar tanımlama şu şekildedir:

/// ---> Sınıf Tanımalma Şablonu <---\\\
erisim_belirleyici + class + Sınıfismi {
    // Sınıfımızın durum ve davranış özellikleri.
}
/// ---> Örnek Bir Sınıf Tanımalması <---\\\
class BenimSinifim
{
    // Sınıfımızın durum ve davranış özellikleri.
}

C# Class ve Nense Kavramları konusunda teorik olarak bir bilgi sahibi olduğumuza göre bir örnek üzerinde bu aşamaya kadar öğrendiğimiz bilgileri kullanışını gözlemleyelim.

Örnek olarak yapacağım, C# Class ve Nesne kavramları konusunda bir işletme personel kayıt yapısını ele alacağım. Bu örnek içerisinde uyguladığım aşamalar ise şu şekildedir:

  1. Örnek uygulama içerisinde personel kayıt sistemi oluşturacağım için Personel isminde bir sınıf tanımlaması gerçekleştirdim.
  2. Sınıf içerisinde kullanacağım özellikler için personel bilgilerinin tutulacağı değişkenler tanımladım.
  3. Personel kaydı oluşturmak için setPersonelBilgileri isminde 3 parametreye sahip bir metot tanımlaması gerçekleştirdim ve metot içerisinde bazı durumlara göre çeşitli değerlerin güncelleneceği bir if-else kontrol yapısı oluşturdum.
  4. Personel bilgilerini aldıktan sonra, oluşturulan personel bilgilerini göstermek için getPersonelBilgileri isminde geriye değer döndüren bir metot tanımlayarak, oluşturmuş olduğumuz personelin bilgilerini yazdırtıyorum.
    using System;
    
    namespace ProjeAdi
    {
        class Personel
        {
            ///---> Değişken Tanımlaması <---\\\
            string isim, soyisim,unvan=null;
            double maas;
            int izinGunu;
            string ayrac = new string ('-',20);
    
            ///---> Metot Tanımlaması <---\\\
    
            public void setPersonelBilgileri(string isim,string soyisim,double maas)
            {
                if(isim.Length>0 && soyisim.Length > 0)
                {
                    if (maas >= 2500)
                    {
                        this.isim = isim;
                        this.soyisim = soyisim;
                        this.maas = maas;
                        this.izinGunu = 14;
                        if (maas >= 3000 && maas <= 4000)
                        {
                            this.unvan = "Kıdemli Personel";
                            this.izinGunu = 20;
                        } 
                        else if (maas >= 4001 && maas <= 5500)
                        {
                            this.unvan = "Kıdemli + Personel";
                            this.izinGunu = 24;
                        }
                        else if (maas > 5500)
                        {
                            this.unvan = "Uzman Personel";
                            this.izinGunu = 30;
                        }
                            
                        else
                            this.unvan = "Personel";
                    }
                    else
                    {
                        Console.Clear();
                        Console.WriteLine("{0}\n<Personel Oluşturulamadı>\n{1}\n-> İşletme içerisinde bir personelin en az 2500 TL maaşı olması gerekmektedir.\n{2}",ayrac,ayrac,ayrac);
                    }
                }
            }
    
            public string getPersonelBilgileri()
            {
                if (unvan != null)
                    return ayrac + "\n<Personel Oluşturuldu>\n" + ayrac + "\n-> Personel İsmi: " + isim + "\n-> Personel Soyismi: " + soyisim + "\n-> Personel Maaşı: " + maas + " TL\n-> Personel Ünvanı: " + unvan + "\n-> Personel İzin Günü: " + izinGunu + " Gün\n" + ayrac;
                else
                    return ayrac + "\n<Personel Oluşturmanız Gerekiyor>\n" + ayrac + "\n-> Personel bilgililerine erişilemiyor. Lütfen önce bir personel oluşturun.\n" + ayrac;
            }
        }
    }
  5. Personel kaydını gerçekleştireceğim sınıfımın tanımlaması bittikten sonra Main sınıfıma giriş yaptım.
  6. Main sınıfımın içerisinde, Personel sınıfının nesnelerini oluşturarak personel oluşturma işlemlerini gerçekleştirdim ve ekrana personel bilgilerini yazdırttım.
    using System;
    
    namespace ProjeAdi
    {
        class Main
        {
            static void Main(string[] args)
            {
                ///---> C# Nesne Tanımlama İşlemleri <---\\\
                Personel mert = new Personel();
                Personel enes = new Personel();
                Personel mustafa = new Personel();
                Personel omer = new Personel(); ///---> Personel bilgisi girişi yapmadığımız için ekrana yazdırırken uyarı verecektir.
    
                ///---> Personel Bilgilerini Oluşturalım <---\\\
                mert.setPersonelBilgileri("Mert", "Çağlayan", 2500);
                enes.setPersonelBilgileri("Mustafa Enes", "Barut", 3750);
                mustafa.setPersonelBilgileri("Mustafa", "Yenice", 7000);
    
                ///---> Oluşturmuş Olduğumuz Personellerin Bilgisini Yazdıralım <---\\\
                Console.WriteLine(mert.getPersonelBilgileri());
                Console.WriteLine(enes.getPersonelBilgileri());
                Console.WriteLine(mustafa.getPersonelBilgileri());
                Console.WriteLine(omer.getPersonelBilgileri());
            }
        }
    }

Kod Çıktısı:

C# Sınıf ve Nesne Tanımlama
C# Sınıf ve Nesne Tanımlama Örneği

C# Class ve Nesne Kavramları konumuzun sonuna gelirken nesneye yönelik programlama kavramının temelini atmış bulunuyoruz. Bundan sonra gelecek konu içeriklerinde çeşitli C# OOP Özelliklerini anlatacağım, bu yüzden aklınıza takılan bir soru varsa ya da konu işleyişi hakkında bir öneriniz varsa aşağıda yer alan yorum yap kısmından benimle iletişime geçebilirsiniz.

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap