şükela:  tümü | bugün
  • (ing. dependency inversion principle)

    "ust seviye siniflar alt seviye sinif implementasyonlarini degil interface'lerini kullanmalidir" $eklinde ozetlenebilecek nesneye dayali yazilim geli$tirme prensibi. yani :

    sınıf hayvan
    {
    ...
    }

    fonksiyon bir_sınıf::bir_fonksiyon(hayvan o)...

    gibi bir tanimlama yerine :

    sınıf hayvan : icanli
    {
    ...
    }

    fonksiyon bir_sınıf::bir_fonksiyon(icanli i)...

    $eklinde bir tanimlama yeglenmelidir ki, ileride aynı interface'ten implemente edilmi$ ba$ka siniflar da kullanilabilsin.

    ayrica;
    (bkz: acik kapali prensibi)
    (bkz: arayuz ayirma prensibi)
    (bkz: liskov degistirme prensibi)
    (bkz: tek sorumluluk prensibi)
  • http://lostechies.com/…endency-inversion-principle/ adresinde prensibi örneklerle açıklayan bir adet ingilizce makale bulunabilir.
  • (bkz: dependency inversion principle)

    bağımlılıkları soyutlamak da denebilir, kullanılan kod, bir interface'e bağımlı olursa bu interface'te tanımlanmış davranışa dair implementasyona dair değişikliğe gidildiğinde, sadece concrete class'ın kodu değişir.

    öteki türlü yukarıdan aşağı kodun her parçasını değiştirmek zorunda kalırsınız ki bu durumda oop kullanmayacağınız duruma göre hiçbir kazancınız yoktur.

    misal;

    taşıtların hızlanmak, yavaşlamak, sağa sola dönmek gibi davranışları vardır. fakat bu davranışlar araba, motorsiklet ve bisiklette davranış olarak değişmese de, bu davranışı gerçeklenme biçimleriyle değişir. arabada hızlanmak için gaza basarsınız, motorda sağ elciği geri çekersiniz, bisiklette pedala abanırsınız.

    bu durumda davranışın soyutluğu (interface, behaviour), onun nasıl uygulandığından bağımsız olmalıdır (implementasyon). önce davranışlar belirlenmeli, ve buralarda bir değişikliğe gidilmeyi anlamsız kılacak şekilde değişiklikler implementasyonda yapılmalıdır. (bkz: abstraction)
  • prensibin dayanağı oldukça kolay ancak anlaşılması ve pratiğe dökülmesi zaman alıyor. anlaşılması zor olduğu için sanıyorum ülkemizde pek kullanılmıyor. bunu tam öğrendiğinizde yazdığınız kodlar ile, eskiden yazdığınız kodlara bakınca aradaki farkı görmek inanılmaz hüzün veriyor.

    (bkz: bir arkadaşım ekolü)