1. C# ile Nesne Yönelimli Programlama
Object Oriented Programming
Sinan BOZKUŞ
sinan.bozkus@bilgeadam.com
2. - Nesne ve Sınıflardan oluşur.
- İlişkili parçalardan meydana gelir.
- Esnek ve genişletilebilir bir yapı sağlar.
- Tekrar kullanılabilirdir, kod tekrarını önler.
- Yönetimi ve bakımı kolaydır, kodlar düzen içerisindedir.
- Ekip halinde çalışmalar için avantaj sağlar.
- Günümüzde bir çok popüler dil tarafından kullanılır. (C#, Java, Php, Phyton…)
- SOLID İlkeleri
Nesne Yönelimli Programlama
3. - İçerisinde metotlar ve alanlar barındırabilirler.
- Yapıcı ve Yıkıcı Metotları vardır.
- Sınıflar aynı zamanda birer nesnedir.
- Erişim belirleyiciler (Access Modifiers) ile
istenilen düzeyde erişim sağlanabilir.
- Sınıflar içerisinde tanımlanan değişkenlere field
(alan) adı verilir. Her bir alan nesnenin bir
özelliğidir (property)
Class (Sınıf)
4. - “New” anahtar sözcüğü ile kullanılır.
- Bir nesneden (class) istenilen sayıda türetilebilir.
- Türetme işlemi yapılırken yapıcı metoda parametre
gönderilebilir.
Instance (Türetmek)
5. Method (Metot)
- Değer döndüren ve döndürmeyen olmak üzere ikiye
ayrılırlar.
- Metot tanımlamak için sırasıyla erişim belirleyici, dönüş
tipi, metot adı ve aldığı parametler yazılacak şekilde
tanımlanır.
- Metot geriye bir değer döndürmüyorsa dönüş tipi olarak
“void” anahtar sözcüğü, değer döndürüyorsa ilgili tip
yazılır.
- Değer döndürme işlemi metot içerisinde kullanılan
“return” anahtar sözcüğü ile yapılır.
- Metotlar istenilen sayıda ve tipte parameter alabilir. Her bir
parametre virgül ile ayrılarak yazılır.
- Aynı isimde birden fazla overload (aşırı yükleme) metot
tanımlanabilir.
6. Access Modifiers (Erişim Belirleyiciler)
Özel bir durum olmadıkça
varsayılan olarak değişkenler
ve metotlar private,
classlar ise internal dır.
7. Constructor (Yapıcı Metot)
- Sanal bellek (RAM) üzerinde nesneyi türeten metottur.
- Sınıf ile aynı isimde tanımlanır.
- Metot olmasına rağmen geriye dönüş tipi olmayan tek
metottur.
- Eğer bir yapıcı metot tanımlanırsa varsayılan yapıcı metot
iptal olur, tanımlanan varsayılan olur.
- Overload yapılabilir, yani birden fazla tanımlanabilir.
- Nesne üretilirken sınıfla ilgili yapılmasını istediğimiz bir
işlem varsa veya sınıfa parameter göndermemiz
gerekiyorsa yapıcı metotları kullanabiliriz.
- Tanımlanmazsa varsayılan olarak parameter almayan
default constructor geçerlidir.
8. Encapsulation (Kapsülleme)
- Nesne tabanlı programlamanın temel ilkelerinden bir
tanesidir.
- Kapsülleme ile veriye dışarıdan direkt erişimi
engelleyebiliriz. (private)
- Başka kod veya sınıflar tarafından doğrudan
kullanılmaması için bariyer görevi görür. Bu sayede
nesneler bilinçsiz kullanımdan korunabilir.
- Veri değeri atanırken (set) veya çağırılırken (get)
istediğimiz iş kurallarını uygulayabiliriz.
9. Inheritance (Miras/Kalıtım)
- Bir sınıf üzerindeki özelliklerin bir diğer
sınıfa aktarılmasına yarar.
- Temel sınıftaki özellikler istenen sayıdaki
sınıflara katılım yoluyla dağıtılabilir.
- Ortak özellikler tek yerde toplanarak kod
tekrarı yapılmasına engel olur.
- Bir sınıftan miras alınırken gerekirse yapıcı
metotuna parameter göndererek sınıflar
arasında veri taşıyabiliriz.
10. Polymorphism (Çok Biçimlilik)
- Ana sınıftan başka bir sınıf türetildiğinde, türeyen sınıfın
ana sınıf içindeki üyeleri kendine göre farklı olarak
uygulamasıdır
- Ana sınıf, kendi içindeki bir üyenin (method, değişken,
event vs.)-, kendinden türeyen başka sınıflar tarafından
değiştirilebilmesini istiyorsa virtual anahtar kelimesi ile
tanımlanmalıdır.
- Türeyen sınıf, gerektiğinde ana sınıf içindeki üyeyi
değiştirmek istiyorsa override olarak yeniden
tanımlayabilir. (Örnek: Class ToString())
11. - Sınıflara (class) benzer yapıda olup daha basit
ve daha performanslıdır.
- Ram üzerinde daha az yer kaplar.
- Miras/katılım almaz, struct ile çok biçimlilik
(Polymorphism) kullanılamaz.
- Parametresiz yapıcı metot tanımlamazsınız.
- Sınıflardan eski bir geçmişe sahiptir, sınıflar bu
yapının üzerine geliştirilerek kurulmuşlardır.
- Örneğin Int struct, String ise sınıftır.
Struct
12. - Uygulama içerisinde sabit olan ve uygulama
boyunca hiç değişmeyen seçenekleri
tanımlamak için kullanılır.
- Kod yazarken seçeneklerin anlaşılır olmasını
sağlar.
Enum (=> Enumeration)
13. - Ram üzerinde bir kez tanımlanır, herkes için aynıdır.
- Türetme işlemi yapılmadan ulaşılan elemanlardır.
- Bir kez tanımlandığı için ram üzerinde az yer kaplar
ve performanslıdır.
- Herkes için aynı olduğundan web tabanlı yapılarda
kullanıcı değerleri gibi verilerin taşınması amaçlı
kullanılamaz.
- Metotlarda parametreye this anahtar kelimesi
verilerek extension method oluşturulabilir.
- Statik metotlara en güzel örnek
MessageBox.Show() dur.
Static (Statik)
14. - Abstract Sınıf, ortak özellikli Sınıflara Base(taban) Sınıf olma
görevini üstlenir
- Standart kalıtım gibi bir diğer sınıfın özelliklerini alırken aynı
zamanda da sınıf içerisinde oluşturulması gereken zorunlu
tanımlamaları (şablon) alır.
- Abstract sınıflar türetilemezler.
- Abstract method, sadece Abstract Class’ların içerisinde
tanımlanır ve Abstract Class’ı kalıtan sınıf tarafından override
edilmek zorundadır.
- Oluşturduğumuz Abstract Class içerisine, Abstract Method
yazılırken gövdesi yazılmaz ve daha sonra Abstract Class’ımızı
kalıtacağımız sınıfta Abstract Method’u override ederiz.
Abstract (Soyut)
15. - Diğer sınıflara rehberlik eden bir sınıftır.
- İşi diğer sınıflara rehberlik etmek olduğundan
sadece metot şablonları tanımlanır.
- Metot içerikleri Interface içerisinde yer almaz.
- Bir interface istenilen sayıda sınıf ile kullanılabilir.
- Interface kullanan sınıflar türetilirken interface
tipinde türetilebilir, bu sayede esnek yapılar
oluşturulabilir.
Interface (Arayüz/Şablon)