C# interface kullanımı

interface, implement edilen sınıflara yön gösterme için kullanılır. Bir sınıfa birden fazla interface implement edilebilir. interface üyelerine gövde tanımlaması yapılmaz. interface üyelerine erişim belirleyicisi(access modifier) belirtilmez. Default olarak public olurlar. interface bir sınıfa implement edilirse, sınıfta interface üyelerinin tümü tanımlanması gerekir. arayüzü(interface) isimlendirme için genellikle I harfi ile başlar. Çıktı : IDBLog, IFileLog ve ILog …

C# abstract kullanımı

Abstract sınıf, ortak özelliklere sahip sınıflara base sınıf(alt sınıf) olma görevini üstlenir. Abstract sınıftan nesne oluşamaz. Abstract metot ise sadece abstract sınıfında tanımlanır ve metodun gövdesi yazılmaz. Abstract sınıfı miras alan sınıflar abstract metodu override etmek zorundadır. Böylece gövdesi miras alan sınıflarda(üst sınıflar) yazılmış olur. Abstract metotlar private olarak tanımlanamaz. Çıktı : SMS ve Mail …

C# Boxing ve Unboxing Nedir?

Boxing, bir değer tipini(value type) object tipine(object type) dolaylı olarak dönüştürme işlemidir. Yukarıdaki örnekte i değişkeni değer tipi(value type) olarak gösterilir. CLR, değer tipini(int i = 123;) kutular(box). 123 değerini System.Object içine paketler(wrap). Sonra yönetilmiş yığında(managed heap) depolar. Yığında(stack) bulunan object o, yönetilmiş yığında(managed heap) bulunan değer tipinin(value type) değerini referans verir. Bu değer, i …

C# static class nedir

Örneği(instance) oluşturulmadan static üyelere erişebiliriz. Sınıfın örneği(instance) ile static üyeye erişemeyiz. Sadece static üyeler içeren bir sınıf için instance oluşturmak bellekte(memory) kullanılmayan olan oluşturur. Bu yüzden böyle bir durumda instance oluşturmaya gerek yoktur. Bu durumda instance oluşturmayı engellemek için oluşturucusu(constructor) private olarak tanımlanır. Sınıfın kendisi static olursa, sadece static üyeler eklenir. Ayrıca instance oluşturmayı engellemek …

C# Generic Sınıf ve Metot Kullanımı

Örneğin bir generic tipi(type) T parametresini kullanma yoluyla, belirli bir tipe bağlı olmayan, bir tek sınıf yazabilirsin. Kod tekrarını önler. MyList generic sınıfı T parametresini kullanarak veri türü farketmeksizin(int, string, Person) işlem yapabilmektedir. System.Collections.Generics kütüphanesini de kullanabilirsiniz. Örneğin List, Dictionary, Queue (First In First Out), Stack (Last In First Out), SortedList (Key değerine göre sıralama) …

C# Serialization nedir?

Bir sınıf örneğindeki(instance) verinin bir yerde depolanırken veya bir yere transfer edilirken programlama dilinden bağımsız standartlara dönüştürme işlemine serileştirme (serialization) denir. Verilerin depolanması veya transfer edilmesi için Binary, SOAP, JSON veya XML gibi standartlar kullanılabilir. Deserialization bu işin tam tersidir. (Serileştirilmiş verinin dönüştürme işlemi sonucunda belli sınıfın örneğine(instance) dönüştürülmesi işlemidir. ) Serileştirme işlemi veya tersi …

Singleton Design Pattern c# nedir

Singleton design deseni kullanılarak, bir programın yaşam süresince belirli bir sınıfın örneği(instance) yalnızca birkez oluşturulur. Bu desen sayesinde yeni örnek(instance) oluşturma yerine referansı kullanılır. Bu referansa global düzeyde erişim sağlanır. Örnek(instance) oluşturma işlemi ilgili sınıf içerisinde static özellik(property) veya static metot ile yapılmaktadır. Oluşan örnek(instance) private erişim türündeki özelliğe atanır. 1. Örnek 2. Örnek private …

C# Factory Design Pattern Nedir

Creational Desenlerden (Pattern) Factory Design Pattern 2 alt gruba ayrılır. 1. Factory Method 2. Abstract Factory Client tarafındaki kodumuzu etkilemeden, factory design desenimizi kullandığımız kodda en az dokunuşla değişiklik yapmamıza izin verir. Factory Method desenini kullanarak bir örnek yapalım. (interface kullanıyoruz.) Senaryomuz File ve DB sınıfları oluşturmak, log kayıtlarımızı veritabanına veya metin dosyasına yazdırmak olsun. …

Single Responsibility Prensibi(SRP) Nedir

SOLID prensiplerinin S harfi olan Single Responsibility; Bir sınıfın, bir metotun tek bir sorumluluğu (amacı) vardır. Bu prensibi uygulamak, kodunuza esneklik sağlamaktadır. ( Herbir nesnenin tek bir görevi vardır. ) Örneğimizi inceleyelim. Single Responsibility Prensibi örneğimizde ihlal edilmiştir. Vehicle sınıfının helper sınıfı ve entity sınıfı davranışını göstermektedir. Tek bir sorumluluğu yoktur. Araba, Otobüs gibi sınıfların …

Dependency Inversion Prensibi Nedir

Üst seviye bir sınıf alt seviye bir sınıfa bağlı olursa, alt seviye sınıfta değişiklik olduğu zaman üst seviye sınıf etkilemektedir. Nesne yönelimli tasarımda SOLID prensiplerin D prensibi olan Dependency Inversion (Bağlılığı Tersine Çevirme), interface kullanarak alt seviye bir sınıfın üst seviye bir sınıfı etkilemesi engellenir. Processor üst seviye sınıftır. SMS ve Mail alt seviye sınıflardır. …