Yazılım Kavramları

Nesneye Dayalı Programlamanın Esasları Nelerdir?

Daha önceki yazılarımızda Nesneye Dayalı Programlama Nedir? Neden kullanılır? Nerelerde kullanılır? gibi soruların cevaplarına bakmıştık. Şimdi ise Nesneye Dayalı Programlamanın esasları nedir? gelin buna bakalım.

Nesneye Dayalı Programlamanın Esasları Nelerdir?

Nesneye Dayalı Programlamada 4 temel kural bulunmaktadır. Bu kurallar Nesneye Dayalı Programlamayı Nesneye Dayalı Programlama yapan temel kurallardır. Nesneye Dayalı Programlamanın Esasları;

  • Inheritance(Kalıtım/Miras alma)
  • Abstraction(Soyutlama)
  • Encapsulation(Sarmalama/Paketleme/Kapsülleme)
  • Polymorphism(Çok Biçimlilik)

bunlardır.

Nesne Yönelimli Programlamanin Esaslari
Nesne Yönelimli Programlamanın Temelleri

1. Inheritance(Kalıtım/Miras alma)

Nesneye Dayalı Programlamanın esaslarından biri olan Kalıtım, sınıflardan yeni sınıflar türetmeyi sağlar. Örnek verecek olursak Nesneye Dayalı Programlama bizim üst sınıfımız(base class) olsun. Ve biz de bu sınıftan Java, C++, C# gibi sınıflar türetelim. Bu üst sınıftan kalıtım yaparak türetilen sınıflara subclass denir. Bu alt sınıflar, üst sınıf olan Nesneye Dayalı Programlama sınıfının özelliklerini taşımış olur. Yani aslında üst  sınıfın özelliklerini miras almış oldu.

Unutulmamalıdır ki alt sınıflar üst sınıfın özelliklerini taşır, miras alır. Fakat hiçbir zaman üst sınıf, alt sınıfın özelliklerini miras almaz.
Kalıtım Örneği

Kalıtım sayesinde biz programlarımızı daha okunabilir, daha anlaşılabilir bir şekilde yazabiliyoruz. Çünkü programı Kalıtım sayesinde parçalara bölmüş oluyoruz. Bu da kodun okunabilirliğini arttırmış oluyor.

2.Abstraction(Soyutlama)

Nesnenin program için gerekli olan özelliklerin yazılması; gerekli olmayan, ihtiyaç duymayacağı özelliklerin ise gizlenmesidir. Yani nesneye sadece içermesi gereken, ihtiyaç duyacağı özellikleri belirtiriz. Buna Nesneye Dayalı Programlamanın esaslarından biri olan Abstraction yani Soyutlama denir. Soyutlama kavramını programlarımızda Interface(arayüz) ve Abstract(soyut) sınıflar ile sağlayabiliriz. Bu 2 kavramın detayına başka bir makalede gireceğiz.

Örnek verecek olursak;

İnsan vücudunu ele alalım. Acıkınca, yemek yiyoruz açlığımız giderilmiş oluyor veya susuyoruz, su içiyoruz susuzluğumuzu gidermiş oluyoruz. Fakat arkaplanda tam olarak ne olup bittiğini bilemiyoruz. Yemeğimizi yiyoruz vücudumuz o besini bir şekilde bölüp parçalıyor ama biz farkında bile olmuyoruz. Yani burada bir soyutlama var.

Veya başka bir örnek verecek olursak ATM üzerinden veya mobil uygulamalarla para ödeme işlemi yapıyoruz. Biz sadece ekranda “para miktarını girin, hesap numarasını girin, parayı gönderin”  gibi özellikler görüyoruz. Fakat kullanıcı olarak o paranın bizden nasıl alınıp nasıl gönderildiğini bilemiyoruz. Çünkü bu kısımlar bizden gizlenilmiş durumdadır. Yani bir soyutlama vardır.

Kısaca soyutlama, gerekli bilgilerin açılıp, gereksiz olanların ise gizlenilmesi durumudur.

3.Encapsulation(Sarmalama/Paketleme/Kapsülleme) 

Nesneye Dayalı Programlamanın Esaslarından olan Kapsülleme, kısaca bir sınıfın içerisinde bulunan metod(fonksiyonları) ve değişkenleri(özellikleri) korumasıdır. İçerisinde bulunan metod ve değişkenlere dışarıdan yani diğer sınıflardan erişilmesinin istenilmediği durumlarda kapsülleme ile bu durumu sağlayabiliriz. Kapsülleme sayesinde sınıf üyeleri(değişkenler ve metodlar), diğer sınıflardan  gizlenmiş ve korunmuş olur. Fakat bu gizliliğin dereceleri vardır. Bu dereceler programlamada erişim belirleyiciler ile gerçekleşir.

Erişim belirleyicileri hakkında biraz bilgi verelim. Daha sonrasında programlama derslerimizde bu konuyu detaylı bir şekilde ele alacağız. Erişim belirleyicilerde(Access Modifiers) karşımıza genel olarak şu kavramlar karşımıza çıkar:

public: Bir değişkeni veya bir metodu public olarak tanımlarsak, bunlara herkes tarafından erişebileceğini yani halka açık olduğunu beyan ederiz. Kısacası hiçbir gizliliği olmadığını söylemiş oluruz.

protected: Bir sınıfa ait değişkene veya metodu protected olarak tanımlarsak sınıfın bulunduğu paketten veya o sınıftan türetilmiş olan alt sınıflardan erişilebilir. Yani sadece eşe dosta paylaşıyoruz.

private: Bir sınıf üyesini private olarak tanımlarsak, sadece o sınıftan erişilebilir. protected gibi “aynı paket içerisinde bulunuyoruz gel sana anlatayım, sen benim dostumsun gel senle şunu paylaşayım” gibi gizliliğini hiç kimseyle paylaşmaz. Yani private olan tanımlanan sınıf üyesi, “kendine müslüman” diyebiliriz.

default: Herhangi bir erişim belirleyici tanımlanmamışsa, default olarak kabul edilir. default tanımlanmış sınıf üyelerine, o sınıftan ve aynı paketteki sınıftan erişilebilir.

Nesneye Dayalı Programlamanın Esasları
Erisim Belirleyiciler

4.Polymorphism(Çok Biçimlilik)

Nesneye Dayalı Programlamanın Esaslarından olan Polimorfizm, yani çok biçimcilik, Kalıtım kavramı ile içe içedir. Polimorfizm ile bir nesne, farklı bir nesne gibi davranabilir. Biraz karışık gelmiş olabilir. Şöyle söyleyelim: Aynı sınıftan türetilen farklı sınıfların nesneleri, aynı metoda(fonksiyona) farklı cevaplar verebilir. İşte biz buna Polimorfizm diyoruz.

Örnek verecek olursak: Bizim İnsan diye bir üst sınıfımız(base class) olsun ve İnsan sınıfının isim diye bir özelliği olsun. Bu İnsan sınıfından da 4 tane alt sınıf türetelim yani kalıtım yapalım. Onlar da Yağızhan, Onur, Ümit, Sıla olsun. Kalıtım yapmış olduğumuzdan dolayı türetilen bu 4 sınıfta isim özelliğini kullanmak zorundadır.

  • Yağızhan sınıfından üretilen nesne “Benim adım Yağızhan”
  • Onur sınıfından üretilen nesne “Benim adım Onur”
  • Ümit sınıfından üretilen nesne “Benim adım Ümit”
  • Sıla sınıfından üretilen nesne “Benim adım Sıla”

diyerek isim özelliğine 4 farklı cevap vermiş.

İşte farklı nesneler aynı özelliğe farklı cevaplar verebiliyor.  İşte Polimorfizm’ in kullanım amacı budur.

Programlamaya yeni başlamış veya başlayacaklar için bu Nesneye Dayalı Programlamanın Esasları konusu biraz karışık gelmiş olabilir. Ama merak etmeyin öğrenilmeyecek, anlaşılmayacak kavramlar değil. Biraz daha programlaya girdiğinizde, kod yazmaya başladığınızda bu kavramlar size daha anlaşılır gelecektir. Ve ilerleyen makalelerimizde bu konular ile alıştırmalar yapılacak yani kod yazarak bu kavramları daha anlaşılır hale getireceğiz. İlerleyen yazılarımızda görüşmek üzere, hoşçakalın.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu
Kapalı