Çok Biçimlilik (Polymorphism)

Nesne tabanlı programlamanın üç temel ögesi vardır. Bunlar, çok biçimlilik, kapsülleme ve kalıtımdır. Nesne tabanlı programlamada çok biçimlilik, nesnelerin dışarıdan aynı yapıda görünmelerine rağmen içerde farklı işlem yapmalarıdır. Bu nedenle sınıflar nesnelerin içindeki farklılıklardan etkilenmeden çalışır. Çok biçimlilik aslında bir arayüz (interface) kullanarak birden fazla metodun kullanılmasını sağlar. Çok biçimliliğin amacı, genel bir sınıf belirtip aynı arayüzü kullanarak oluşabilecek karmaşıklığı azaltmaktır.

Nesne tabanlı programlama sınıflar belli bir sıraya göre tasarlanır. Başta genel bir sınıf sonra da bu sınıftan oluşmuş ve yeni elemanlar katılarak farklı özelliklere sahip yeni sınıflar vardır. Yeni oluşturulan sınıflar temel sınıfın özelliklerini taşır. Ancak oluşturulan sınıflar temel sınıfın özelliklerini taşırlarken temel sınıf türetilen sınıfın özelliklerini taşımaz. Bir örnekle açıklayacak olursak; Okullar sınıfının genel bir sınıf olduğunu düşünelim. Bu sınıfın bir elemanı olan Meslek Liseleri vardır. Okullar sınıfının özelliklerini meslek liselerine geçirebiliriz. Ama tam tersi söz konusu değildir. Çünkü her meslek lisesi bir okuldur ama her okul bir meslek lisesi değildir.

Örnek

Okul sınıfından Anadolu, MTAL ve Fen sınıfları türetilerek C# Console’da yapılan seçime göre okulun hangi tür olduğunu bulan programın kodları polymorphism mantığına göre yapılmıştır.

using System;

namespace ConsoleApplication
{
    class Okul
    {
        class Anadolu : Okul
        {
            public string okul = "Anadolu Lisesi";
        }

        class MTAL : Okul
        {
            public string okul = "Mesleki Teknik Anadolu Lisesi";
        }

        class Fen: Okul
        {
            public string okul = "Fen Lisesi";
        }

        static void Main(string[] args)
        {
            string sec;
            Console.WriteLine("1- Anadolu");
            Console.WriteLine("2- MTAL");
            Console.WriteLine("3- Fen");
            Console.Write("Seçiminiz: ");
            sec = Console.ReadLine();

            switch (sec)
            {
                case "1":
                    Anadolu A = new Anadolu();
                    Console.WriteLine(A.okul);
                    Console.ReadKey();
                    break;
                case "2":
                    MTAL M = new MTAL();
                    Console.WriteLine(M.okul);
                    Console.ReadKey();
                    break;
                case "3":
                    Fen F = new Fen();
                    Console.WriteLine(F.okul);
                    Console.ReadKey();
                    break;
                default:
                    Console.WriteLine("Yanlış seçim yaptınız.");
                    Console.ReadKey();
                    break;
            }
        }
    }
}

Programda okul seçimi için switch-case yapısı kullanılmıştır. Yapılan seçime göre program uygun satıra yönlendirerek işlem yapılmaktadır. Herhangi bir seçim işleminde o sınıfa ait bir üye değişken oluşturularak yazma işlemi bu üye değişene (A.okul, M.okul, F.okul) göre gerçekleştirilmiştir. Programın ekran görüntüsü;

çok biçimlilik polymorphism nedir

Bir Cevap Yazın

  1. Kapsülleme Encapsulation Nedir ve Örnek – Burak Sakallı
    Şub 25, 2017

    […] önceki Nesne Tabanlı Programlama konusunda Çok Biçimlilik Polymorphism Nedir ve Örnek yazısını […]

    Reply
  2. Kalıtım (Inheritance) Nedir? – Burak Sakallı
    Mar 15, 2017

    […] önceki Nesne Tabanlı Programlama konularında Çok Biçimlilik Polymorphism Nedir ve Örnek / Kapsülleme Encapsulation Nedir ve Örnek yazılarını […]

    Reply