A’dan Z’ye C# OOP (Nesne Yönelimli Programlama)
Herkese merhaba
Bu makalemde sizler ile C# OOP yani Nesne Yönelimli Programlama hakkında örnekler yapacağız ve dilimin döndüğü kadarıyla teori bilgiler vermeye çalışacağım. Ardından birkaç örnek ile bugünkü yazımı tamamlayacağız.
Bu arada yazımı beğenmeyi ve paylaşmayı, bi de beni takip etmeyi unutmayın :)
Nesne Yönelimli Programlama ‘nın temel amacı gün geçtikçe ilerleyen ve genişleyen yazılım sektöründeki bir takım problemlere ve tıkanıklıklara çözüm üretmektir.
Object Oriented Programming’de ana mantık, mevzu bahis konuların classlar ile soyutlanarak hem bilgisayarın hem de insanların anlayabileceği modeller oluşturmaktır.
CLASS
C# OOP : Classlar bizim yapmak isteğimiz işlemleri gruplara ayırmak, o grup üzerinden işlemlerimizi yapmak ve rahatlıkla bu gruba ulaşmak için kullanabilirz.
-- bir class’ı kullanabilmek için onun örneğini(referansını) oluşturmamız gerekmektedir.
-- bir class oluştururken kelimenin ilk harfi büyük oluşturulur. Ama örneği oluşturulduğunda ilk harfi küçük, sonraki kelimelerin ilk harfi büyük yazılır.
- Classlar bir gruplama tekniği olarak metodlar ile kullanılabilir.
- Classların bir diğer özelliği property dediğimiz nesneleri(özellikleri) tutmasıdır.
- Property olarak tanımladığımı classlarımızdaki
get
veset
dediğimiz bloklar,encasulation
tekniklerinin en temel versiyonu ile kullanılır.
- bir field üzerinde
get
veyaset
ederken yani değeri verirken veya değeri okurken başka bir şey yapmak istersekencapsulation
tekniğini kullanmamız gereklidir.
INTERFACE
İsimlendirme standardı I
ile başlatmaktadır. Interface’lerin en büyük kullanım amacı bir temel operasyon, temel nesne oluşturup bütün nesneleri ondan implemente etmektir.
Interface’ler soyut nesnelerdir. Soyut nesneler tek başına hiç bir anlam ifade etmezler.
- Bir
interface
hiç bir zamannew
anahtar sözcüğü ile kullanılamaz(new lenemez). Çünkü tek başına bir anlam ifade etmezler.Interface'i
kendi başınanew
lememiz mümkün değildir.
Interface
veabstract
gibi soyut nesnelerinew
anahtar sözcüğü ile kullanmamız mümkün değildir.
Interface’lere ileri bir seviye örnek ile devam edelim.
POLYMORPHISM ( ÇOK BİÇİMLİLİK )
Bir nesneyi farklı amaçlarla implemente edip, o implemantasyonları belli bir kısmına veya tamamına ulaşmak için kullanılır.
Interface’ler ile ilgili bir örnek ile devam edelim. Örneğimizin temel amacı interface'lerin
doğru planlanması üzerinedir. Yazılım geliştirme prensiplerinden SOLID
dediğimiz, 5 tane yazılım geliştirme prensibi var. Bu prensipler bir programcı için önemlidir. Bu örneğimizde SOLID ’in
I harfi olan Interface Segregation
prensibi üzerine örnek yaptık.
Bir class birden fazla
interface'i
implemente edebilir.
INHERITANCE ( KALITIM )
Bir nesneyi bir defa inheritance olarak alabiliriz ama birden fazla implemantasyon yapabiliriz. (Inheritance) önce yazılır
Class
ların tek başına bir anlamı vardır ama interface
’ler tek başına bir anlam belirtmezler.
VIRTUAL METHOD
Virtual methods (sanal metotlar), base class (temel sınıf) içinde bildirilmiş ve derived class (türemiş sınıf) içinde de tekrar bildirilebilen metotlardır. Böylelikle sanal metotlar kullanılarak nesne yönelimli programlama da çok sık başvurulan çok biçimliliği yani poliformizm (polimorphizm) uygulanmış olur. Yani temel sınıfta bir sanal metot bildirildiğinde bu temel sınıftan türeyen sınıflardaki metotlar override edilerek, temel sınıftaki sanal metotu devre dışı bırakabilirler.
Virtual methodlarda temel operasyonlarımız var. İstediğimiz operasyonları
override
ile ezebiliriz.
ABSTRACT CLASS
Abstract’ larda birer classtır, yani interface gibi değil. Interface'ler
ile virtual methodların
birleşimi olarak düşünebiliriz. Tamamen INHERITANCE(KALITIM)
amacı ile kullanılır.Interface'ler
ile virtual methodların
tam kullanım nedenlerini bir araya getirilmesinden oluşur.
Son bir örnek yapıp makalemizi bitirelim.
- Abstract method sadece abstract class ta olabilir ve derived class tarafinda override edilmek zorunda.- Virtual method ise normal class ta bulunur ve derived class tarafinda override edilmek zorunda değil.
Projenin kaynak koldarı GitHub
sayfamda mevcuttur.
Umarım faydalı bir yazı olmuştur. Herkese mutlu kodlamalar.
KAMİL KAPLAN ( Software Engineer)
Bir sonraki makalede görüşmek ümidi ile sağlıcakla kalın.