29 Kasım 2014 Cumartesi

Nesneye Yönelik Programlama

    S.a. Arkadaşlar ,
     Çok uzun süredir başlamak istediğim fakat bir türlü cesaret edemediğim çoğu zaman başlayıp sildiğim bir blog yazısına başlıyorum, Elimden geldiğince , dilim döndüğünce hem yazdıkça kendim daha iyi pekiştirmek hem belki sizlere de yardımcı olabilmek amacıyla bu yazıyı kaleme alıyorum. Bu kısa girizgahtan sonra konuya giriş yapalım isterseniz.

      Nesne Yönelimli Programlama öncelikle C++ kullanmıştım kısa bir dönem , daha sonra da Java kullanmaya başladım. Ama anlattıklarım genelde Java'daki bilgilerimle paralellik gösterecektir.

     Nesneye yönelik programlamada 4 adet olmazsa olmaz konumuz vardır.Bunlar:
1-Kalıtım
2-Çok Biçimlilik
3-Kapsülleme
4-Soyutlama

    Aslında bakarsak bunların her biri başlı başlığına uzun makale olabilecek konular. Belki bunları daha sonra ayrıntılı ele alacağız fakat şuan bunları kısaca anlatmaya çalışacağız.

   1-Kalıtım: Bazı özellikleri tekrar tekrar yazmak yerine kullanabileceğimiz bir yapı. Örnek vermek gerekirse bir ailemiz var. Ve bu ailenin bazı özellikleri anne ve babadan gelir. Bu anne babadan gelen özellikleri tekrar çocuk yazmak yerine , anne-babadan referans kullanarak bu bilgileri çekebiliriz. Fakat bununla birlikte çocuğun kendine has özelliklerini ayrıca da ekleyebiliyoruz. Kalıtımın en sade ifadesiyle böyle anlatabilecğimi düşünüyorum.

   public class cocuk extends annebaba {
 
//Yazılacak Kodlar
}

   Yukarıdaki örnek ile anne-babadan gelen özellikleri çocuk artık kullanabilir hale gelmektedir. Kısaca kalıtım böyle , daha ileride daha ayrıntılı anlatmak dileğiyle.

    2-Çok Bçimlilik: Farklı sınıflar arasında aynı metod çağırma denilebilir en kısa ifadesiyle. Örnek vermek gerekirse elimizde üçgen , dörtgen ve beşgen gibi 3 şekil olsun.
   Her şeklin çevresi=kenar sayisi * kenar uzunluğu olmalıdır. Bunu aynı methodla farklı sınıflarda kullanılabilmesidir.

     3-Kapsülleme: Bir sınıfın içeriğinin bilinmesine gerek kalmadan kullanılabilmesidir. Bir örnekle zenginleştirmek gerekirse, arabası olan bir şoförün motor çalışma mantığına bilmesine gerek yoktur. Sadece anahtarla arabayı çalıştırıp gaza bastığında arabanın gitmesi kafidir. Aynen bu şekilde de kapsülleme yaparak dışarıya gözükmemesi gereken şeyleri gizleye biliyoruz. Burada bir kaç kavramı verip bu konuyu da bitirelim.

     Public: Herkesin görebileceği değişkenlerdir
     Procted: Aynı paket içinde görülebilecek , fakat farklı paketlerden ulaşılamayan değişkenlerdir.
     Private: Sadece aynı sınıftan erişilebilen değişkenlerdir.

     Bu değişkenlerin ulaşılmaz olanlarına ulaşılmak istendiğinde getter/setter metodlarını kullanmak zorundayız. Fakat şu unutulmamalıdır. Sadece kullanacağımız değişkenleri getter/setter yapmalıyız. Yoksa private değişkenlerimizin publicten pek farkı kalmayacaktır

      4-Soyutlama: Metodların bir kısmının kendisinde barındıran , bir kısmını kalıtım sınıflarından alan sınıflara soyut sınıflar denir.Alt sınıfların ortak özelliklerini ve işlevlerini taşıyan bir üst sınıf oluşturmak
istersek ve gerçek dünyada bu sınıftan bir nesne yoksa , üst sınıfı “soyut
sınıf” olarak tanımlarız. Örnek verecek olursak “Memeli” sınıfından direkt bir nesne oluşturulmaz; ancak alt sınıfları tanımlanarak onlardan nesneler oluşturulur.


     Şimdilik dilimiz döndüğünce bu konuyu yazmaya çalıştık , umarım faydamız dokunur . Varsa yanlışlarımız affola , diğer yazımızda görüşünceye kadar hoşça kalın .


Hiç yorum yok:

Yorum Gönder