C# ile Nesne Yönelimli Programlama
C# ile Nesne Yönelimli Programlama
Bilge Adam için hazırlanan bu C# ile Nesne Yönelimli Programlama sunumu içerisinde;- Nesne yönelimli programlama ne işe yarar.
– Metotlar
– Sınıflar (Class)
– Instance (Türetmek)
– Erişim Belirleyiciler (Access Modifiers)
– Yapıcı Methodlar (Constructor)
– Kapsülleme (Encapsulation)
– Miras/Katılım (Inheritance)
– Çok Biçimlilik (Polymorphism)
– Struct
– Enum
– Statik Yapılar
– Soyut Nesneler (Abstract)
– Interface yapılarından kısaca bahsedilmiştir.
BilgeAdam Nesne Yönelimli Programlama from Sinan Bozkuş
1. C# ile Nesne Yönelimli Programlama / Object Oriented Programming (Sinan BOZKUŞ)
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)