C++ Polimorfizm Yapısı Nedir? [Çok Biçimlilik]

c++ poliformizm

Nesne tabanlı programlama ile uğraşanların ilk öğrendikleri konulardan biri de, inheritance ve polymorphism konularıdır. Çok biçimlilik büyük projelerde sizlere kolaylık sağlar.

Şimdi ben bir örnek hazırladım. Bu örneği inceleyelim.

Bize ait tekerlek üreten bir firmamız var. Müşteri gelip tekerleğin çapını ve kalınlığını girdiği zaman, tekerin boyutlarına göre bisiklet tekeri ya da araba tekeri olduğunu bize söylüyor. Eğer belirttiğimiz aralıklar dışındaysa eğer, aralık dışında olduğunu belirtiyor.

Bunun için Tekerlek Firması adında ana sınıf oluşturdum. Alt sınıflar olarak ise, Bisiklet Tekeri ve Araba Tekeri diye iki sınıf oluşturdum. Bu sınıflarda değişken tanımlamasını gerçekleştirdim. Oluşturduğum Control adlı fonksiyon ile girilen tekerlek boyutlarını kontrol ettirdim. Main metot kısmında ise girilen değerleri değişkenlere eşitleyip kontrol fonksiyonundan geçişini sağladım.

#include <iostream>
#include <string>

using namespace std;

 
 class tekerlekfirmasi{
  protected:
   int cap,kalinlik;
  public:
   tekerlekfirmasi(int a = 0, int b = 0){
    cap = a;
    kalinlik = b;
   }
   void control(){
    if(( cap >= 2 && cap <= 40) && (kalinlik >= 10 && kalinlik <= 20))
    cout << "Bisiklet Tekeridir"<< endl;
    else if(( cap >= 20 && cap <= 60) && (kalinlik >= 50 && kalinlik <= 70))
    cout << "Araba Tekeridir"<< endl;
    else
    cout << "Aralik Disidir"<< endl;
   }
 };
 
 class bisiklettekeri: public tekerlekfirmasi{
    public:
       bisiklettekeri(int a=0, int b=0):tekerlekfirmasi(a, b) { }
 };
 
 class arabatekeri: public tekerlekfirmasi{
    public:
       arabatekeri(int a=0, int b=0):tekerlekfirmasi(a, b) { }
 };
 
int main( )
{
   int cap = 0, kalinlik = 0;
   tekerlekfirmasi *t;
   
   cout << "Cap girin: ";
   cin >> cap;
   cout << endl << "Kalinlik girin: ";
   cin >> kalinlik;
   
   bisiklettekeri bt(cap, kalinlik);

   t = &bt;
   t->control();
   
    arabatekeri at(cap, kalinlik);

 t = &at;

 t->control();
   
   return 0;
}

 

Yazı gezinmesi

Mobil sürümden çık