Arayüz Ayırma Prensibi – Interface Segregation Principle (ISP)

Birbiriyle ilişkisiz birden çok metodu içeren büyük bir interface yerine, ilişkili metotları içeren birden fazla küçük interface sınıfı daha makbuldür. Bir interface sınıfına haddinden fazla sorumluluk yüklemek o sınıfı uygulayan(implement) diğer sınıflara da aynı sorumluluğu yüklemek anlamına gelir. ISP’ye göre, bir sınıf ihtiyaç duymadığı metotları uygulamak zorunda bırakılmamalıdır.  Bu prensibe aykırı davranarak aşağıdaki Dokuman sınıfını […]

Liskov’un Yerine Geçme Prensibi – Liskov Substitution Principle (LSP)

LSP, aynı sınıftan türetilen sınıfların birbiri yerine rahatça kullanılabilmesini amaçlayan prensiptir.  Aynı base sınıftan üretilen tüm alt sınıflar, birbirlerinin yerine kullanılabilir olmalıdır. Alt sınıflara özel bir istisnai durum kesinlikle oluşmamalıdır. Alt sınıflardan oluşan nesnelerin üst sınıfın nesneleri ile yer değiştirdikleri zaman, aynı davranışı sergilemelidir. Bu doğrultuda aşağıdaki şekilde bir Dikdortgen sınıfımız ve basit bir AlanHesapla […]

Açık Kapalı Prensibi – Open Closed Principle (OCP)

Yazılımda değişmeyen tek şey değişimin kendisidir. Bunun için ilerde yapacağımız değişiklikleri göz önünde bulundurarak şuan yazdığımız kodları bu değişimleri sancısız atlatacak şekilde yazmalıyız. OCP prensibi de zaten bunun için var. OCP’ye göre yazılımda bir modül geliştirmeye açık fakat değiştirmeye kapalı olmalıdır. Yazılımımıza yeni bir özellik eklemek istediğimizde bunu mevcut kodlara, sınıflara dokunmadan yapabiliyor olmamız gerekir. […]

Tek Sorumluluk Prensibi – Single Responsibility Principle (SRP)

Nesne yönelimli programlamanın en temel prensiplerinden biri olan Tek Sorumluluk(Single Responsibility) prensibine göre bir sınıfa hatta bir metota bile tek bir sorumluluk yüklenmeli, bir nesne sadece bir iş yapmalıdır.Bir diğer söylemle; bir sınıfa yazdığımız kodu değiştirmemize sadece tek bir şey sebep olmalıdır.Bu açıyla aşağıdaki Dergi sınıfına bakıldığında YaziEkle ve YaziSil olarak iki metot görülüyor ve […]

Bubble Sort

Bir dizi içerisindeki elemanları 2’şer 2’şer ele alarak karşılaştırarak sıralayan temel algoritmalardan biridir. Yukardaki resimde görüldüğü üzere elemanlar 2’şer olarak alınmış, eğer 2. eleman 1. elemandan küçükse swap işlemi yapılmış(küçükten büyüğe sıralamak için) ve dizinin sonuna kadar devam edilmiş. Bu işlemler hiç swap olmayana kadar devam edilince dizi sıralanmış olur. Aşağıda bubble sort algoritmasının Java […]