Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Yazılım Mühendisliği - Polimorfizm



  April 06, 2019    Labels:,,,,,,,,, 

Yazılım sistemlerinde değişiklik kaçınılmaz bir durumdur. Yazılan kod her zaman değişmek zorunda kalır. Bu yüzden yazdığımız kodu kolay değişebilir şekilde yazmalıyız. Aksi takdirde yazdığımız kod çok kısa bir zaman sonra çöp olacaktır. Bu problemi çözümü nesne yönelimli programlamada polimorfizm'dir. Polimorfizm ile sistemimizde bir değişiklik yapmak zorunda kaldığımızda mevcut kodları değiştirmeden sadece yeni kodlar ekleyerek problemlerimizi çözebiliriz. Bu işlemin amacı daha önceden yazılmış kodun bağımlılıklarından kurtulmaktır. Çünkü bir kodu değiştirmek her ne kadar kolay gözüküyor olursa olsun o kodun sistemimizde bağımlı olduğu yerleri düşündüğümüzde yani etkilediği diğer kod parçalarını düşündüğümüzde işin içinden çıkılamaz bir durum oluşur. Bu yüzden polimorfizm kullanarak sistemlerimizi tasarlamalıyız.

Polimorfizm kısaca, yazılımda uyumluluğu yani geçmişte yazılan kodların, gelecekte yazılacak olan kodları desteklemesini sağlayan bir nesne yönelimli programlama tekniğidir.

Polimorfizm iki şekilde gerçekleştirilebilir.
  • Soyut sınıf ve saf sanal fonksiyonlar kullanılarak.
  • Interface yani arayüzler kullanılarak.

Aşağıdaki iki örnekte de sisteme yeni bir şekil eklendiği zaman Ciz sınıfında veya sistemin herhangi bir yerinde bir kod değişikliği yapmamıza gerek olmaz.

Soyut Sınıf Örneği


public class Ciz{

     public void sekilCiz(Sekil sekil){
         sekil.sekilCiz();
     }
}

public class Sekil {
    
    public void sekilCiz(){
        
    }
}

public class Kare extens Sekil {
    
    public void sekilCiz(){
        
    }
}

public class Daire extens Sekil {
    
    public void sekilCiz() {
        
    }
}

Interface Örneği

public class Ciz{

     public void sekilCiz(Sekil sekil){
         sekil.sekilCiz();
     }
}

public interface Sekil {
    
    public void sekilCiz();
}

public class Kare implements Sekil {
    
    public void sekilCiz(){
        
    }
}

public class Daire implements Sekil {
    
    public void sekilCiz() {
        
    }
}


No comments:

Post a Comment