İlginizi Çekebilir
  1. Ana Sayfa
  2. C#
  3. C#’ta Virtual Class Yapısı Nedir? Nasıl Kullanılır? Örnekli Anlatım

C#’ta Virtual Class Yapısı Nedir? Nasıl Kullanılır? Örnekli Anlatım

Bu makalemde # da, Virtual metodlardan bahsedeceğim. Virtual, metodlara uygulanan anahtar bir sözcüktür. Ve Virtual olarak tanımladığımız metodlarımızı, diğer class larda override edebiliriz.

Yani, kalıtıldığı(miras alındığı) sınıfta metodun gövdesini ( süslü parantezlerin içi) değiştirebileceğimiz anlamına gelir.

Virtual metodları aslında bir çok yerde kullanabiliriz, ama genel olarak kullanım şekilleri aşağıdaki gibidir.

  • Sadece metod isimlerini belirteceğimiz bir classımız olsun, metodların ne işlev yapacağını diğer classlarda belirtecek isek Virtual metod kullanırız.
  • Birden çok Class larımızın, aynı anlama gelen metodları varsa, bu metodu Virtual olarak tanımlarız.
  • Yazılımda standartlaşmak önemlidir, eğer geliştirilen uygulamamızın farklı modüllerinde, metod isimlerimizin aynı olması isteniyorsa, yine Virtual metod kullanırız.

Her Abstract metod aslında Virtual dır, fakat Abstract metodlar ile Virtual metodların arasında önemli farklılıklar vardır. Abstrac konusunu merak eden arkadaşlar varsa Abstract Classlar adlı makalemi inceleyebilirler.

Şimdi, Virtual metodlarımız ile ilgili giriş anlamında bir örnek yapalım.

3 Adet Class ımız olsun, A, B ve C adlarıyla.

Görüldüğü gibi, 3 adet clasımız var,

A Clasında ClassName adında bir Virtual metod tanımlanmış, B ve C class ımızda A dan miras alarak ClassName metodunu overright etmiştir.

İşlemimize devam edelim;

Aldığımız sonuç :


Resim-1

Bir de aşağıdaki gibi deneyelim.

Aldığımız sonuç :


Resim-2

Görüdlüğü gibi, A clasımızda bir Virtual metod tanımladık ve B,C classlarımızda da bu metodun gövdesini değiştirerek kullanabildiğimizi gösterdik.

Ayrıca,

Gibi ifadelerde, C, A dan türetildiği için A nın üzerindedir. Bu yüzden bu tür durumlarda eşitlik daima Sağ taraftakine göre olacaktır.

Şimdi, gelelim asıl örneğimize.

Bu örneğimizde Virtual metodlarımızı neden kullandığımızı daha iyi anlayacağız.

Ufak bir uygulama yapacağız ve uygulamamızda Diktörtgen, Kare ve Çember gibi şekillerimizin Alan, Çevre uzunluğunu hesaplayacağız. (Matematik bölümü mezunu olduğum için bu tür uygulamalara yatkınımdır 🙂 )

Hemen Class larımızı aşağıda belirtelim.

Evet Class larımızı oluşturmuş olduk.

Hesaplamalar adında bir class oluşturduk ve içerisine AlanHesapla ve CevreHesapla adında 2 adet Virtual metod tanımladık.

Ardından:

Dikdortgen, Kare ve Cember adında 3 adet class tanımladık ve Hesaplamalar classındantirettik.

Daha sonra her bir classımız için Alan ve Çevre hespalamalarını yukarda gördüğünüz gibi hesapladık 🙂

Şimdi gelelim sonuçlarımıza:

Kodlamamızı aşağıdaki gibi yapalım:

Hesaplamalar DikdortgenHesapla = new Dikdortgen();

Ve aldığımız sonuç aşağıdaki gibidir.


Resim-3

Görüldüğü gibi, Aynı metod, farklı classlar içerisinde farkı işlevler yapabilmektedir.

AlanHesapla ve CevreHesapla metodlarımız, 3 farklı metod içerisinde, farklı hesaplamalar yapmıştır.

Bu işlevi yapmamızı sağlayan Virtual metodlarımızdır.

Bu makalemde Virtual metodlarından bahsetmeye çalıştım. Umarım verdiğim örnekler faydalı olmuştur.

Yukardaki örnekleri içeren uygulamayı Buradan indirebilirsiniz.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Yorum Yap

Yazar Hakkında

1986 Aksaray Doğumluyum, Yıldız Teknik Üniversitesi Matematik bölümünden 2010 yılında mezun oldum ve yaklaşık 4 senedir IT sektöründe Yazılım ve Sistem uzmanı olarak çalışmaktayım. Bu süre içerisinde birçok Windows ve Web uygulamaları geliştirmiş olup, SQL Server konusunda oldukça tecrübeliyim. MCP, MCTC, MCPD, MCITP, MCSA ve CCNA sahip olduğum sertifikalardır.

Yorum Yap

Yorumlar (4)

  1. Çok teşekkürler.Anlatımınız çok güzel ve sade.

  2. Keşke code editor vs. kullansaydınız.

    • 4 ay önce

      Yazıyı tekrar düzenleyeceğiz. 1-2 gün sonra tekrar kontrol edebilirsiniz. Geri bildiriminiz için teşekkürler.

  3. Overright degil de override olacakti