Abstract Sınıf Kavramı (C#)

Batuhan Düzgün tarafından yayınlanmıştır 27. October 2010 19:33

Merhaba arkadaşlar sizlere bu yazımda nesneye dayalı programlama konularından biri olan ve önemli bir geçerliliği olan Abstact Class (Özet Sınıflar) 'dan bahsedeceğim.İsterseniz ilk olarak Absract Class'ın ne olduğunu belirtelim.
 
Absract Class Nedir?
 
Abstract sınıflar özet sınıflardır.Yani amaçları ortaközellikleri bir çatı altında toplama isteğidir.Abstract Sınıf ‘lar bu konudabizlere yardımcı olur.Abstract anahtar kelimesi kullanılarak tanımlanır.Ayrıcametodlarda abstract olabilir.Abstract olarak tanımlanan bir Sınıf veya Metod’uniçeriği alt taraftaki türeyen sınıflarda farklı işlevleri gören kodlar iledoldurulabilir. 
 
Şimdi de C# programlama diline Abstract Class nasıl tanımlanır bir inceleyelim.Yapacağımız uygulama nedir kısaca açıklayalım.
 
Uygulamamızın İçeriği Nedir? 
 
Yapacağımız örnekte,toplama,çıkarma,çarpma ve bölme gibi dört temel aritmetiksel işlemi yapan bir sistem kuracağız.Bunun için ortak özellikleri ve metodları "AbstractIs" adlı bir sınıfta topluyoruz.Ardından alt sınıfları oluşturup,bu ata sınıftan kalıtım aldırıyoruz.Abstract olarak tanımladığımız ata sınıfın içindeki abstract metodları alt sınıflarda uygun şekilde dolduruyoruz.Yapacağımız uygulama console tabanlı olacaktır.
 
İlk iş "AbstractIs" Sınıfının Tanımlanması ... 
 
Bu sınıf içinde aşağıdaki metodlar ve değişkenler yer alacaktır.
 
Yer alan metodlar ...
 
*  DegerleriAta()         void tipinde
*  Hesapla()                void tipinde
*  DegerleriGoster()     void tipinde
 
Yer alan değişkenler ...
 
*  IlkSayi  double tipinde 
*  IkinciSayi double tipinde
*  Sonuc  double tipinde
 
 "AbstractIs" Sınıfı Kodlar ...
 

abstract class AbstractIs

    {

        protecteddouble IlkSayi;

        protecteddouble IkinciSayi;

        protecteddouble Sonuc;

 

        publicAbstractIs()

        { }

 

        public abstract voidDegerleriAta();

        public abstract voidHesapla();

        public abstract voidDegerleriGoster();

    } 
 
Dikkat ederseniz abstract metodların gövdeleri boş doldurulmamış.Abstact bir metod tanımlamak için sınıfında abstract olması lazım.Bu sebeple sınıfımıza abstract anahtar sözcüğünü ekledik.
 
Hemen ardından alt sınıfları oluşturalım.Alt sınıflarımızın isiimleri aşağıdaki gibidir.
 
*Toplama
*Carpma
*Bolme
*Cikarma
 
İlk olarak "Toplama"  adlı sınıfımızı yazalım.
 
Toplama Sınıfının Kodları ... 

class Toplama:AbstractIs

{

        public override voidDegerleriAta()

        {

            Console.WriteLine("Toplama ilk sayiyi giriniz...");

            IlkSayi = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Toplama ikinci sayiyi giriniz...");

            IkinciSayi = Convert.ToInt32(Console.ReadLine());

        }

 

        public override voidHesapla()

        {

            Sonuc = IlkSayi + IkinciSayi;

        }

 

        public override voidDegerleriGoster()

        {

            Console.WriteLine("Toplama işlemi sonucu : "+Sonuc);

        }

}

Görüldüğü üzere abstract olan metodlar override anahtar sözcüğüyle içini dolduruyoruz.Bütün abstract metodlar bu şekilde uygun kodlar ile doldurulur.
 
Cikarma Sınıfı Kodları ... 
 

class Cikarma:AbstractIs

    {

        public override voidDegerleriAta()

        {

            Console.WriteLine("Çıkarma ilk sayiyi giriniz...");

            IlkSayi = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Çıkarma ikinci sayiyi giriniz...");

            IkinciSayi = Convert.ToInt32(Console.ReadLine());

        }

        public override voidHesapla()

        {

            Sonuc = IlkSayi - IkinciSayi;

        }

        public override voidDegerleriGoster()

        {

            Console.WriteLine("Çıkarma işlemi sonucu : " + Sonuc);

        }

    } 
 
Aynı işlemler bu sınıf içinde uygulanır.
 
Carpma Sınıfı Kodları ... 

class Carpma:AbstractIs

    {

        public override voidDegerleriAta()

        {

            Console.WriteLine("Çarpma ilk sayiyi giriniz...");

            IlkSayi = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Çarpma ikinci sayiyi giriniz...");

            IkinciSayi = Convert.ToInt32(Console.ReadLine());

        }

 

        public override voidHesapla()

        {

            Sonuc = IlkSayi*IkinciSayi;

        }

 

        public override voidDegerleriGoster()

        {

            Console.WriteLine("Çarpma işlemi sonucu : " + Sonuc);

        }

    } 
 
Bolme Sınıfı Kodları ... 

class Bolme:AbstractIs

    {

        public override voidDegerleriAta()

        {

            Console.WriteLine("Bölme ilk sayiyi giriniz...");

            IlkSayi = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Bölme ikinci sayiyi giriniz...");

            IkinciSayi = Convert.ToInt32(Console.ReadLine());

        }

        public override voidHesapla()

        {

            if(IkinciSayi!=0)

            {

               Sonuc = IlkSayi * IkinciSayi;

            }

            else

            {

                Console.WriteLine("Sıfıra bölme hatası ...");

            }

        }

        public override voidDegerleriGoster()

        {

            Console.WriteLine("Bölme işlemi sonucu : " + Sonuc);

        }

    } 
 
Projemiz hazır son olarak "Program.cs" kaynak kod sayfası içine kodlarımızı yazalım.
 

class Program

    {

        static void Main(string[] args)

        {

            AbstractIsIslem = new Toplama();

            Islem.DegerleriAta();

            Islem.Hesapla();

            Islem.DegerleriGoster();

            Console.ReadLine();

        }

    } 
 
Görüldüğü üzere "AbstractIs" adlı bir referans değişkene ben aynı tipten kalıtım almış,fakat alt sınıf olan bir sınıfın nesnesini oluşturup atama işlemi yapabiliyorum.Bu çok biçimliliğe örnektir.
 
Şimdi de projemizi derleyip sonuçlara bakalım.
 
 
 
Umarım faydalı bir makale olmuştur.Bir sonraki makalemde görüşmek dileğiyle ...
 
Batuhan Düzgün
 
Sakarya Üniversitesi
 
Bilgisayar Mühendisliği
 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Nesneye Yönelik Programlama

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  September 2018  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Yazıları geniş takvimde göster