Design Patterns(Tasarım desenleri)

Yazılım mühendisliğinde  tasarım deseni , yazılım tasarımında yaygın olarak ortaya çıkan bir sorun için genel olarak tekrarlanabilir bir çözümdür. Bir tasarım deseni doğrudan koda dönüştürülebilen bitmiş bir tasarım değildir. Birçok farklı durumda kullanılabilecek bir problemin nasıl çözüleceğine dair bir açıklama veya şablondur.

Tasarım Desenlerinin Kullanımı

Tasarım kalıpları, test edilmiş ve kanıtlanmış geliştirme paradigmaları sağlayarak geliştirme sürecini hızlandırabilir. Tasarım desenlerini yeniden kullanmak, büyük sorunlara neden olabilecek ince sorunları önlemeye yardımcı olur  ve kod okunabilirliğini sağlar.

Devamını Oku
Ali Can Çapar Ali Can Çapar C#   8 ay önce

SOLID-Dependency Inversion Principle

Dependency Inversion Prensibinin Tanımı

Bu ilkenin genel fikri önemli olduğu kadar basittir: Karmaşık mantık sağlayan yüksek seviye modülleri, düşük seviye modüllerindeki olası değişikliklerden kolayca tekrar kullanılabilirliği sağlamak  ve değişikliklerden  etkilenmemelidir. Bunu başarmak için, üst ve alt seviye modüllerini birbirinden ayıran bir soyutlama yapmalısınız.

Bu düşünceye dayanarak, Robert C. Martin'in Bağımlılık İnversiyon Prensibi tanımı iki bölümden oluşmaktadır:

1.Yüksek seviye modülleri, düşük seviye modüllerine bağlı olmamalıdır. Her ikisi de soyutlamalar bağlı olmalıdır.

2.Soyutlamalar ayrıntılara bağlı olmamalıdır. Detaylar soyutlamaya bağlı olmalıdır.

Bu tanımın önemli bir detayı, yüksek seviye ve düşük seviye modüllerinin soyutlamaya bağlı olmasıdır. Tasarım prensibi, adını ilk defa okurken beklediğiniz gibi bağımlılığın yönünü değiştirmez. Aralarında bir soyutlama getirerek yüksek ve düşük seviye modülleri arasındaki bağımlılığı böler. Sonuçta iki bağımlılık elde edersiniz.

Devamını Oku
Ali Can Çapar Ali Can Çapar C#   8 ay önce

SOLID-Interface Segregation Principle

 Bu ilke , Xerox'un yeni yazıcı sistemleri için yazılımı oluşturmalarına yardımcı olmak için danışmanlık yaparken, Robert C. Martin tarafından belirlendi. Bunu şöyle tanımladı:

 “Müşteriler, kullanmadıkları arayüzlere bağlı olmaya zorlanmamalıdır.”

Bu makalede size göstereceğim gibi, özellikle yazılımınız geliştikçe ve daha fazla özellik eklemeniz gerekiyorsa, bu ilkeyi  ihlal etmek oldukça kolaydır.

Single Responsibility ilkesine benzer şekilde,  Interface Segregation İlkesinin amacı yazılımı çok sayıda bağımsız bölüme ayırarak gerekli değişikliklerin yan etkilerini ve sıklığını azaltmaktır.

Devamını Oku
Ali Can Çapar Ali Can Çapar C#   8 ay önce

SOLID- Liskov Substitution Principle

Open / Closed Prensip  Bir önceki yazıda açıklandığı, sağlam sürdürülebilir ve yeniden kullanılabilir yazılım bileşenlerini yazmaya olanak sağlayan OOP'deki anahtar kavramlardan biridir. Ancak, bu ilkenin kurallarına uymak, sisteminizin bir bölümünü diğer bölümlerini bozmadan değiştirebilmeniz için yeterli değildir. Sınıflarınız ve arayüzleriniz, yan etkilerden kaçınmak için Liskov Substitution Prensibini takip etmelidir.

Liskov Substitution Principle Robert C. Martin'in ünlü SOLID tasarım ilkelerinin 3.'sü :

Üst sınıfın ve alt türlerinin davranışlarına odaklanarak Open / Closed İlkesini genişletir. Bu makalede size göstereceğim gibi, bu en azından Open /Closed İlkenin yapısal gerekliliklerini doğrulamak açısından önemli ancak daha da zordur.

Devamını Oku
Ali Can Çapar Ali Can Çapar C#   8 ay önce

SOLID -Open/Closed Principle

Open/Closed Principle, Robert C. Martin tarafından tanımlanan nesne yönelimli yazılım geliştirme için beş tasarım ilkesinden biridir .

Bu tasarım ilkelerinin tamamı geniş bir şekilde kullanılmaktadır ve tüm deneyimli yazılım geliştiricileri bunlara aşina olmalıdır. SOLID ilkelerini öğrenmeden önce birkaç yıl boyunca bir yazılım geliştiricisi olarak çalışıyordum ve iş arkadaşlarımın bana iyi bir kod yazmayı öğrettikleri kuralları ve ilkeleri tarif ettiklerinde çabucak kabul ettim. Yani, onları isimle bilmeseniz bile, onları zaten kullanıyor olabilirsiniz.

Ancak bu, SOLID ilkeleri hakkında konuşmamamız ve öğrenmememiz gerektiği anlamına gelmez. Bu yazıda, Open/Closed Principle odaklanacağım ve ilerideki makalelerde diğer ilkeleri açıklayacağım.

Devamını Oku
Ali Can Çapar Ali Can Çapar C#   8 ay önce

SOLID -Single Responsibility Principle-Tek Sorumluluk İlkesi (SRP)

 

 

SOLID, nesne tabanlı yazılım geliştirmede en popüler tasarım ilkelerinden biridir. Aşağıdaki beş tasarım ilkesi için anımsatıcı bir kısaltmadır:

Hepsi geniş çapta kullanılıyor ve bilmeye değer. Ama serilerimin bu ilk yazısında, SOLID ilkeleriyle ilgili olarak, birinciye odaklanacağım:

Devamını Oku
Ali Can Çapar Ali Can Çapar C#   9 ay önce

C# Diziler Giriş

Diziler aynı türde bulunan verileri bir arada tutan bir mekanizmadır.Diziler referans tipine aittir.Dizi içerisinde bulunan her elemanın bir indeksi vardır.Yani her değerin bir sıra karşılığı vardır.

Neden her elemanın bir sıra  karşılığı olmasına gerek var ?

Bunun nedeni bir dizi içerisine sakladığımız her değere ulaşmak isteyebiliriz , mevcut değer üzerinde işlem yapmak isteyebiliriz.

Verilerin dizi içerisinde konumu şu şekildedir.  Dikkat ettiyseniz dizi indeksi  0 ile başlar .Burada 0 

indeksli elemanın değeri 10, 1 indeksli elemanın değeri 20 gibi her değerin bir indeks karşılığı vardır.

Devamını Oku
Ali Can Çapar Ali Can Çapar C#   9 ay önce

Multithread Kavramı ve Temelleri

   İleri programlama konularından olan Multithread nesnesi yardımıyla birçok program parçacığı aynı anda birbirlerine müdahale etmeden çalıştırmak  mümkündür. Yürütülen iş parçacıklarını bir süre bekletmek  veya istenen anda sonlandırmakta bir başka avantajıdır.

Konunun daha iyi anlaşılması için basit örnekler şeklinde gitmekte fayda var.Örneğimiz şu şekilde olsun.İki tane metodumuz olsun.Bu iki metod birbirini etkilemeden, sıra beklemeden eş zamanlı olarak çalışmasını sağlayalım. Birinci metod char tipli a dan başlayarak z ye kadar harfleri yazacak, ikinci metod ise int tipinde 1'den 30'a kadar olan sayıları yazıyor.Dikkat etmemiz nokta iki metod aynı anda çalıştığında nasıl sonuç alacağımız.

Devamını Oku