9 entry daha
  • şu şekilde ifade etmek en basidi sanırım:

    bir balık tanımı yapıyorsunuz, sonra bu 'balık' tanımına 'soluma' işlemini tanımlıyorsunuz.

    akvaryumunuzdaki tüm balıklar solungaçlı olduğu için suda soluyabiliyor. daha sonra akvaryumunuz büyüdü ve yunus aldınız. yunus sizin 'balık' tanımınıza göre bir balık ama suda soluyamıyor maalesef. şimdi yeni bir tanım yapmanız lazım. 'balık' tanımınızı aldınız ve ondan 'yenibalık' tanımı türettiniz*. bu 'yenibalık' tanımındaki 'soluma' işlemi ise akciğer ile soluma yapıyor. şimdi buradaki kritik noktaya geldik.

    tüm 'balık' tanımını kaldırıp yerine 'yenibalık' tanımını getirirseniz.
    yunus dışındaki tüm balıklarınız boğulur.

    işte burada liskov'un prensibini ihlal etmiş olursunuz.

    not : açık kapalı prensibine göre zaten 'soluma' işlemini güncellemek yerine, 'akcigerlisoluma' diye başka bir şey işlem tanımlamanız gerekmekteydi. bu yüzden uncle bob bu iki prensibe kardeş diyor.

    not2 : "çok basit bir şeymiş ya, niye mal gibi tüm balık tanımını değiştirdim ki?" diyebilirsiniz. buradaki bariz şey, 'soluma' işlemini biliyor oluşunuz. daha kompleks bir işlev için aynı şeyi yaptığınızda, nereyi etkiler kestiremezsiniz. bu da sizin hatayı arama sürenizi uzatır.
2 entry daha
hesabın var mı? giriş yap