Kurumsal Otomasyon Çözümlerinde Zirve

Polymorphism (Polimorfizm) ile Interface

Makalemizin amacı Interface yazmak ve farklı class lar içerisinde eşdeğer methodları tetiklemek olacaktır. Şimdi aşağıdaki iki farlı class’a dikkat edin.

interface Problem
{
         double Alan(int x, int y);
int Cevre(int x, int y);

}
public class Ucgen:Problem’Kalıtım Var Dikkat
{
        public double Alan(int x, int y)
{
            return x * y / 2;
}
public int Cevre(int x, int y)
{
            return (x + y);
}
}
public class Dikdortgen : Problem
{
        public double Alan(int x, int y)
{
            return x * y ;
}
public int Cevre(int x, int y)
{
            return (x + y)*2 ;
}
}

 

Kodlamada dikkat edecek olursanız aynı iki adet class mevcuttur. Fakat iki classtada “Alan” ve “Cevre” isimli iki method vardır (Başka isimde ve farklı methodlarda olabilir). Bu iki class için yazmış olduğumuz “Problem” isimli Interface ile ikisininde interface içerisinde tanımlı methodunu işletmemiz mümkün olabilmektedir.

 

Dikdortgen A = new Dikdortgen();
Ucgen B = new Ucgen();

private void button1_Click(object sender, EventArgs e)
{
            Problem Yeni = (Problem)A;
this.Text=Convert.ToString(Yeni.Alan(10, 20)); //Üçgenin alanını Bulur
}

        private void button2_Click(object sender, EventArgs e)
{
            Problem Yeni = (Problem)B;
this.Text=Convert.ToString(Yeni.Alan(10, 20));//Dörtgenin Alanını Bulur
   }

        private void button3_Click(object sender, EventArgs e)
{
            Problem Yeni = A as Problem;//Bu şekildede gösterilebilir
this.Text = Convert.ToString(Yeni.Alan(10, 20));
  }

        private void button4_Click(object sender, EventArgs e)
{
            Problem Yeni = B as Problem;
this.Text = Convert.ToString(Yeni.Alan(10, 20));
     }

Dikkat edim “Problem” isimli interface değişkeni ile Ucgen veya Dortgen içerisindeki iki methodda çağrılabilmektedir. Polimorfizm kavramının temel dayanağı bu mantıktır.

Yorum Yapılmamış

Bir cevap yazın