-

c++da polymorphism kavramı

polymorhism nedir?
polymorphism’in  türkçesi çokbiçimliliktir,
çok biçimlilik  sözcüğünü duyduğımuzda aklımıza  tek bir  şeyin farklı kullanımlara farklı yanıtlar vermesi  gelebilir.bunu sınıf kullanımına indirgediğimizde ise birbiriyle kalıtımla ilişkisi olan farklı sınıfların nesnelerinin aynı üye   fonksiyon çağrısına farklı yanıt vermesi  şeklinde açıklayabiliriz.
polymorphism nasıl kullanılır?
bunun için bir base classımız olmalı(temel sınıf),ve ondan kalıtımla oluşan derived classlar(türetilmiş sınıflar).
base classda oluşturulan bir  fonksiyon diğer sınıflarından hepsinde de kullanılacak ama bu  fonksiyonların herbirinin içeriği  farklı olacak.
base classda tanımladığımız ve bütün classlr için ortak kullanmak istediğimiz fonksiyonu base classda tanımlarken bunu “virtual”  olarak tanımlayıp,kullanmalıyız.diğer classlara  tanımlama  yaparken ise  normal tanımlama yapılmalıdır.
base classdaki tanımlama:
public  virtual string speak() const
kalıtılmış  sınıftaki tanımlama:
public string speak() const
mainde  bunu kullanacakken de alt sınıflardan nesne oluşturup bunu base classın pointerına ya  adresine eklemek  gerekir.
dog kucik  //dog derived class,pet  base class
pet *p1=&kucik
ya da
pet &p2=kucik
şeklinde kullanılır
polymorphismin ne fayda sağlar?
aynı fonksiyonu kullanacak yeni bir alt class eklendiğinde de  fonksiyonun içeriğini tekrardan yazmak zorunda kalmacağız.
bu  söylediğimiz  durum tabiki büyük projelerde avantaj sağlayacaktır,temel bir  içeriğie  sahip  fonksiyon var ve  buna herbir  oluşturulan classda yeni özellikler ekleniyor.

burda açıkladığım örnek kod var     tıklayıp   inceleyebilirsiniz.

DERYA GÜNDÜZ

Category: C++
  • Alper says:

    teşekkürler

  • ismail says:

    bende acemi bir c # öğrencisi olarak ödevim olan bu makale için teşekkür ederim.malum msdn ingilizce.böle türkçe makalelere yoğunlukla ihtiyac var :)

  • DERYA GÜNDÜZ says:

    Rica ederim.Faydalı olmuşsa ne mutlu.Ben de fırsat buldukça çalıştıklarımı yazıyorum.

Your email address will not be published. Required fields are marked *

*