Derya Dok Kişisel Blog

Kategori: Yazılım Page 1 of 3

C# Notlarım 23: Static Class Yapısı

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.

C# Notlarım 22: Değer ve Referans Tipler

Herkese merhaba. C# üzerinde bool, integer, string gibi pek çok değişken türü sayabiliriz. Bu değişken türleri aslında değer (value) ya da referans (reference) tip dediğimiz veri tiplerinden türerler. Değer ve referans tipler bellekte farklı bölgelerde tutulmaktadır. .NET Framework bellek yönetimini önemli ölçüde kendisi yapar. Biz de tanımladığımız değişkenin hangi bölgede yer almasını istiyorsak bellek yönetimini belli ölçülerde kendimiz ayarlamış oluruz. C# üzerindeki bellek bölgelerini inceleyerek konumuza giriş yapalım. Örneklere github hesabımdan ulaşabilirsiniz.

C# Notlarım 21: Abstract ve Interface

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.

C# Notlarım 20: Soyutlama (Abstraction)

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.

C# Notlarım 19: Çok Biçimlilik (Polymorphism)

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.

Mikroservis Mimarisi Nedir?

Herkese merhaba. Bu yazımda biraz daha teorik bir konu ile ilgili bildiklerimi sizlere aktarmaya çalışacağım. Son dönemlerde özellikle büyük uygulamalar içerisinde sıkça duyduğumuz Mikroservis mimarisi nedir, karakteristik özellikleri nelerdir bunları inceleyeceğiz. Bu yazımı oluştururken özellikle Martin Fowler‘ın yazısından faydalandım, sizin de incelemenizi tavsiye ederim. Mikroservis mimariye giriş yapmadan önce karşıtı olan monolitik uygulama nedir onu bir inceleyelim.

C# Notlarım 18: Kalıtım (Inheritance)

Herkese merhaba. C# yazı dizimdeki en önemli konuya, kalıtıma geldik. Kalıtım bir class’ı temel alarak ondan başka class veya class’lar oluşturmamızı sağlar. Bu uygulama içerisinde yeni geliştirme yapılmasını ve bakımını oldukça kolaylaştırır.  Kendisinden bir başka class türetilen class’a base class denir. Base class’ın içerisinde bulunan bütün property ve metotlara türetilen class içerisinden erişim sağlayabiliriz. Ayrıca türetilen class içerisine kendine has property ve metotlar yerleştirebiliriz. Ortak özelliğe sahip nesnelerimiz varsa her birisi için aynı propertyleri tanımlamak yerine ortak özellikleri içeren bir base class oluşturabiliriz.

C# Notlarım 17: Property ve Access Modifier

Herkese merhaba. Kapsülleme yazımdan sonra property ve access modifier (erişim belirleyiciler) konusunun daha iyi anlaşılması için bir örnek yazısı hazırladım. Yazının sonlarına doğru Type Initializer, Anonim Tipler (Anonymous Types) ve Index Property (Indexer) konularına da değineceğim. İlk konu kapsamda bir matematik kütüphanesi hazırlayacağım. Bu matematik kütüphanesinin içerisinde üs alma metodunun farklı erişim belirleyici versiyonları yer alacak. Bu projeyi github repomda bulabilirsiniz. Dilerseniz siz de kendi projenize entegre ederek bu kütüphaneyi kullanabilirsiniz. Property ve Access Modifiers (erişim belirleyiciler) yapılarının ne olduğunu hatırlamak için C# Notlarım 16: Kapsülleme (Encapsulation) yazımı okuyabilirsiniz.

C# Notlarım 16: Kapsülleme (Encapsulation)

Herkese merhaba. Nesne Yönelimli Programlama Nedir? yazımda -bütün nesne yönelimli programlama dillerine de uygun olabilmesi adına- nesne yönelimli programlamaya kabataslak bir giriş yapmıştım. Şimdi ellerimizi biraz kirletmenin zamanı geldiğini düşünüyorum. 😄 Adım adım bütün OOP konularını C# için ele alacağım. Önce kapsülleme ile başlayalım. Kapsülleme ile bir nesnenin dışarıdan erişilmesini engellemiş oluruz. Bu sayede ilerde bir dll, kütüphane ya da framework geliştirdiğimiz zaman insanlara sadece bizim izin verdiğimiz kadarına erişim hakkı sunarız. Erişim belirleyicilere biraz daha detaylı bir şekilde baktıktan sonra C# içinde kapsülleme işlemini nasıl yapacağımızı göstereceğim.

Nesne Yönelimli Programlama Nedir? (Object Oriented Programming)

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. 😊

Page 1 of 3

Powered by WordPress & Theme by Anders Norén