Nesneye Dayalı Programlama Temel Kavramlar Hüseyin ESKİ
Temel Kavramlar Sınıf: Nesneye dayalı programlamada, verileri ve bu verileri işleyecek kodları barındıran, nesne oluşmasını sağlayan, nesnelerin şeklini tanımlayan şablondur. Nesne, sınıflardan oluşan ve sınıfların birer örneği olan somut yapılardır. Sınıf, nesnenin nasıl inşa edileceğini tanımlayan bir kılavuzdur. Sınıf soyut bir ifadedir ve nesneler oluşuncaya kadar fiziksel olarak bellekte yer almazlar. Bir sınıftan birden fazla nesne üretilebilir ve bu nesnelerin özellikleri farklı olabilmektedir.
Temel Kavramlar sınıf SinifAdi { //Nitelikler //Davranışlar } SinifTipi nesne=yeni SinifAdi(); nesne.nitelik nesne.davranis()
Temel Kavramlar Örneğin marka, model, yıl, renk nitelikleri ve BilgileriYazdır davranışı olan «vasita» bir sınıftır. «vasita» soyut bir kavramdır. Bu sınıftan türetilen 2010 siyah Opel Astra bir nesnedir ve artık somut bir şekilde nasıl bir vasıtadan bahsedildiği bellidir. Aynı şekilde 2015 mavi Renault Clio’da aynı sınıftan türetilmiş başka bir nesnedir. Vasıtalardan oluşacak nesnelerin ne gibi özelliklere sahip olması gerektiği sınıfın içerisinde belirtilmiştir. Oluşturulan her nesne birbirinden bağımsızdır ve hafızada farklı yerlerde saklanır.
Temel Kavramlar class vasita { public string marka; public string model; public int yil; public string renk; public void BilgileriYazdir() { Console.WriteLine(yil+ " " + renk + " "+ marka + " " + model); }
Temel Kavramlar vasita a1 = new vasita(); a1.marka = "Opel"; a1.model = "Astra"; a1.yil = 2010; a1.renk = "Siyah"; a1.BilgileriYazdir(); vasita a2 = new vasita(); a2.marka = "Renault"; a2.model = "Clio"; a2.yil = 2015; a2.renk = "Mavi"; a2.BilgileriYazdir(); a1.BilgileriYazdir();
Temel Kavramlar
Temel Özellikleri Nesneye Dayalı Programlama teorisinde 4 özellik temel olarak kabul edilmiştir. Bu özelliklerin tamamını sağlamayan bir dil nesneye dayalı programlama dili sayılmamaktadır. 1. Soyutlama (Abstraction) 2. Sarmalama / Paketleme (Encapsulation) 3. Miras Alma (Inheritance) 4. Çok Biçimlilik (Polymorphism)
1. Soyutlama (Abstraction) ⁻ Karmaşıklığın azaltılması anlamına gelmektedir. ⁻ Nesne tanımlanırken verinin kullanılması veya veriye erişilmesi için gerekli detayların azaltılması işlemidir. ⁻ Örn: «araba» sınıfında «calistir» metodu olduğunu düşünelim ⁻ Bu metodun içerisinde çok sayıda kod vardır ⁻ Nesnede bu metot kullanılırken içerisindeki kodlarla ilgilenilmez. Sadece metot ismi görünür. ⁻ araba1.BilgileriYazdir();
2.Sarmalama/Paketleme (Encapsulation) ⁻ Sınıflar içerisindeki çeşitli özelliklere nerelerden erişilebileceğini belirler ⁻ Güvenlik ve kontrol sağlamaktadır ⁻ Sarmalama erişim denetleyicileri ile sağlanmaktadır. ⁻ Public: Bu şekilde tanımlanmış bir metot veya değişkene herhangi bir yerden ulaşmak mümkündür. ⁻ Private: Bu şekilde tanımlanmış bir metot veya değişkene sadece sınıf içinden ulaşmak mümkündür. ⁻ Protected: Bu şekilde tanımlanmış bir metot veya değişkene tanımlandıkları sınıftan veya bu sınıftan türetilmiş sınıflardan ulaşılabilir.
3. Kalıtım/Miras Alma (Inheritance) ⁻ Kalıtım, ebeveyn(taban sınıf) öğenin özelliklerini çocuk(türetilmiş sınıf) öğelere iletmesi anlamına gelmektedir. ⁻ Türetilen her bir sınıf, türediği sınıfın özelliklerini de devralır. ⁻ Türetilen sınıfta, taban sınıfın özelliklerine ek başka özellikler edinebilir, yada almış oldukları özellik/davranışları geçersiz kılabilirler ⁻ Temel amaç benzer kodları barındıran sınıfların ortak özellik/davranışlarını bir araya toplayarak kodun tekrar kullanılabilirliği (reuse) ve merkezi yönetimini sağlamaktır. ⁻ Örn: «vasita» sınıfının bütün özelliklerini taşıyan ve ek özellikler barındıran «araba» ve «kamyon» sınıfları; «vasita» sınıfından kalıtım olarak, türetilmiş alt sınıflardır.
4.Çok Biçimlilik (Polymorphism) ⁻ Bir türün bir başka tür gibi davranabilme ve bu tür gibi kullanılabilme özelliğidir ⁻ Bir sınıfın kendisinden kalıtım alan sınıfları temsil edebilme yeteneğine çok biçimlilik denir. ⁻ Örn: «vasita» sınıfından türetilmiş «araba» ve «kamyon» sınıfları düşünüldüğünde, «vasita» sınıfının/tipinin kendinden türetilmiş bu iki sınıfın yerine kullanılabilmesidir.
C# Örnekleri public class vasita { private string d_gizli; protected string d_korumali; public string d_genel; public string marka; public string model; public int yil; public string renk; public void BilgileriYazdir() { Console.WriteLine(yil+ " " + renk + " "+ marka + " " + model); } public class araba : vasita { public string yolcu; public void arabaBilgileri() { Console.WriteLine(yil + " " + renk + " " + marka + " " + model+ " Koltuk:" +yolcu); }
C# Örnekleri public void KamyonYazdir(kamyon km) { km.kamyonBilgileri(); } public void ArabaYazdir(araba arb) { arb.arabaBilgileri(); } public void BilgileriYazdir(vasita vs) { vs.BilgileriYazdir(); } araba a1 = new araba(); a1.marka = "Opel"; a1.model = "Astra"; a1.yil = 2010; a1.renk = "Siyah"; kamyon k1 = new kamyon(); k1.marka = "Ford"; k1.model = "2524"; k1.yil = 2005; k1.renk = "Beyaz"; ArabaYazdir(a1); KamyonYazdir(k1); BilgileriYazdir(a1); BilgileriYazdir(k1);