Herkese merhaba. Bu yazıda yazılım dünyasında oldukça sık kullanılan terimlerden biri olan Design Patterns (Tasarım Kalıpları) konusunu inceleyeceğiz. Design pattern’lar genellikle yazılım geliştirme sürecinde sıkça karşılaştığımız sorunlara karşı geliştirilen çözümlerdir. Pattern’ler kodun okunabilirliğini arttırır ve tekrar tekrar kullanılabilir olmasını sağlar. Pattern kavramı ilk olarak Cristopher Alexander’ın “A Pattern Language: Towns, Buildings, Construction” kitabında tanımlanmıştır. Kitap içerisinde kentsel çevreyi tasarlamak için kullanılan bir “dil” anlatılmaktadır. Kullanılan bu dilin birimlerini ise pattern’ler oluşturur. Bir binanın penceresinin yüksekliği, kaç kata sahip olması gerektiği gibi birim kurallar pattern’ler ile açıklanmaktadır. Daha sonra 1994’te Gang of Four (GoF) olarak bilinen 4 arkadaşın “Design Patterns – Elements of Reusable Object-Oriented Software” kitabı ile yazılım dünyası da pattern’ler ile tanışır.
Etiket: c# nesne yönelimli programlama
Herkese merhaba. Bir önceki yazımda değer ve referans tipleri anlatmıştım. Bu yazıda da static class yapısını inceleyeceğiz. C# içerisinde nesne yönelimli programlamada static class’ları kullanarak daha fonksiyonel bir programlama yapabiliriz. Genellikle tek bir tane üretmek istediğimiz nesnelerde static yapısını tercih ederiz. Örneklere github hesabımdan ulaşabilirsiniz.
Herkese merhaba. Bir önceki yazımda abstraction konusunu detaylı bir şekilde anlatmıştım. Bu yazıda, abstract class ve interface arasındaki farkları inceleyeceğiz. İki yöntem de kullanım açısından açısından benzer olsa da aralarında bazı farklılıklar bulunmaktadır. İki yöntemi de ayrı ayrı başlıklar altında inceleyelim. Örneklere github hesabımdan ulaşabilirsiniz.
Herkese merhaba. Nesne yönelimli programlamanın son konusu olan soyutlama (abstraction) konusunu inceleyeceğiz. Soyutlama projedeki karmaşıklığı azaltmayı sağlar. Birden fazla sınıfa kalıtım verecek olan en temel nesneler soyutlama yöntemiyle oluştulur. Üretimde kullanılmayacak ama diğer tasarımların kalıtım aldığı bir temel kurulur. Ancak kendisi somut olarak proje içerisinde yer almaz. Örneklere github reposundan ulaşabilirsiniz.
Herkese merhaba. Nesne yönelimli programlamanın ana başlıklarından biri olan polymorphism konusunu inceleyeceğiz. Bazen içeride farklı işlemler yapılsa bile aynı sonucu döndüren metotlara ihtiyacımız olur. Aynı kodu tekrar tekrar yazmak bir süre sonra projenin inanılmaz boyutlara ulaşmasına neden olur. Nesne yönelimli programa metodolojisinde de bu sorunu çözmek için çok biçimlilikten faydalanırız. Çok biçimlilik, temelde aynı tür olan metotların farklı davranması gerektiğinde kullanıldığımız bir yöntemdir. Örneklere github reposundan ulaşabilirsiniz.
Herkese merhaba. 😊 Bugün yazılımcılığa girişin ilk adımı olarak nitelendirebileceğim Nesne Yönelimli Programlama (Object Oriented Programming) konusuna giriş yapacağım. Bu konu tamamen dil bağımsız bir konu olduğu için C# dışında istediğiniz bir programlama dilinde uyarlayabilirsiniz. Bu yazıya kadar anlatmaya çalıştığım yazılarımla bir ürün ortaya çıkartabilirsiniz. Örnek olarak bir konsol uygulaması yaptığımızı düşünelim. Yapılan işleri Program.cs dosyasının içerisinde metotlara bölerek modüler bir şekilde yazdık. Daha sonra bu ürünü başka birisi geliştirmek için aldı ve o da bir takım metotlar ekledi. En sonunda ürün doğru bir şekilde çalışıyor olsa bile ortaya spagetti kod çıkmış oldu. Bu projenin bakım maliyeti de artmış oldu çünkü 3. bir kişi geldiğinde belli bir kalıp yapı üzerinden ilerlenmediği için uyum sağlama süreci daha uzun olacaktır. Projemizi en başından OOP kullanarak yapmış olsaydık hem spagetti koddan kurtulmuş hem de bakım maliyetini azaltmış olacaktık. Bu işin biraz hikaye kısmı şimdi biraz daha konuya girerek daha yakından bakalım. 😊