Nesne Yönelimli Programlama (OOP) nedir ?

Furkan Alaybeg
3 min readJun 17, 2019

--

Bu yazımda giriş olarak nesye yönelimli programlama (object oriented programming) mantığını, nerelerde kullanılır hakkında günlük yaşam örnekleriyle açıklamaya çalışacağım. Nesne Yönelimli Programlamanın daha iyi anlaşılabilmesi için program, programlama, yazılım gibi kavramların açıklanmasının daha faydalı olacağı düşünüyorum.

Program
Günlük hayatta bir sorunu bilgisayar ile çözmek, rutin işleri kolaylaştırmak için yazılan yazılımlardır. Başka bir deyişle bilgisayarın bir işlevi yapması için tasarlanmış komut zinciridir. Kişinin program yazması için öncellikle genel bir programlama bilgisine sahip olması ve bir programlama dili bilmesi gerekmektedir.

Programlama Dili
Programlama dili, bilgisayar ortamında çözülecek bir sorun için, çözümün bilgisayara adım adım yazılmasını sağlayan, biçimsel
olan tanımlar kümesidir. Günlük hayatta çözülmek istenen problemin bilgisayara aktarılması için kullanılan dil olarak örneklendirebiliriz.

Yazılım
Kullanıcıların iş süreçlerini kısaltmak, verimliliği artırma gibi çeşitli görevler için hazırlanmış programlardır. Günümüzde ihtiyaçları karşılamak üzere geliştirilmiş web, mobil ve masaüstü yazılımları örnek gösterilebilir.

Nesne Yönelimli Programlama
Nesne yönelikli programlamaya örnek verecek olursak gerçek hayatta gördüğümüz araba, radyo, bina… gibi nesnelerin bilgisayar ortamına aktarılmasına denir.
Örneğin lambanın açık-kapalı olması durumu, veya radyonun rengi, markası, üretim yılı… gibi özelliklerinin bilgisayar ortamında gösterilmesidir.

Nesne Yönelikli Programlamanın sağladığı kolaylıklar

  • Gerçek dünyadaki nesnelerin tasarımları sınıf içinde yapılır.
  • Sınıftan nesne üretilip değişiklik yapılmak istendiğinde tüm programda değişiklik yapmak gerekmez, sadece oluşturulan nesnenin sınıf içinde değişiklik yapılması yeterlidir.
  • Oluşturulan nesneler birbirinden bağımsız olduğu için bilgi gizleme olanağı artar.
    Örneğin A nesnesi B nesnesinin özelliklerini kullanamaz ve erişemez.
  • Nesne oluşturma, bir sınıf içerisinde gerçekleştirilir ve bu kodlar başka projelerde kullanılabilir.
    Örneğin bir A nesnesi oluşturduysak bunu birçok yerde kullanabiliriz.
  • Oluşturulan sınıflar yardımıyla daha az kod ile daha fazla iş yapılıp kod tekarı önlenir.
    Örneğin insan sınıfında isim, soyisim, yaş… gibi özellikleri bir defa oluşturup istediğimiz kadar kullanabiliriz.
  • Kod tekrarı önlendiği için geliştirme sürecinin verimliliği artar.

Sınıf Nedir ?

Gerçek dünyadaki nesnelerin özellikleri ve davranışları sınıflara aktarılır. Bu durumların sınıflara aktarılması metodlar yardımıyla olur. Sınıfta tanımlanan metot ve değişkenlere sınıfın üyeleri denir. Değişkenler isim, soyisim, yaş gibi kullanacağımız bilgileri saklamaktadır. Metotlar ise, kullanıcı kaydı, iki sayısının toplamı gibi bir görevi yerine getiren alt programlardır. Sınıf soyut bir kavramdır doğrudan kullanılamaz nesne oluşturup kullanabiliriz.

Nesne Nedir?

İçinde veri saklayan ve bu veriler üzerinde işlem yapacak olan metodlar bulunduran bileşenlerdir. Nesneler her uygulamada tekrar kullanılabilir. Nesne oluşturduğumuzda hafızada yer kaplar.

Nesne Yönelimli Programlama Özellikleri

Nesne Yönelimli Programlamada 4 temel özellik vardır. Bu özelliklerden birini sağlamayan programlama dili nesne yönelimli programlama dili olarak sayılmaz.

1.) Soyutlama (Abstraction)
2.) Kapsülleme (Encapsulation)
3.) Miras Alma (Inheritance)
4.) Çok biçimlilik (Polymorphism)

Soyutlama: Bir sınıfta davranış ve özelliklerin tanımlanmasına soyutlama diyoruz.
Örneğin araba sınıfında rengi, modeli, tekerlek sayısı, motor gücü, özellikleridir. Hızlanması, fren yapması, durması davranışlarıdır ve metotlar ile tanımlanır.

Kapsülleme: Davranış ve özellikler sınıfta soyutlanarak kapsüllenir. Kapsülleme ile hangi özellik ve davranışın dışarıya sunulup sunulmayacağını belirleriz.
Örneğin İnsan sınıfında yemek alışkanlığı bizi iliglendirmiyorsa bunu kapalı (private) yapıp gizleriz. Ancak isim soyisim gibi bilgiler bizi ilgilendirdiği için bunlar açık bırakılır. Bu olaya bilgi saklama yani kapsülleme denilmektedir. Bilgi saklama erişim belirteçleri (public, private, protected) ile gerçekleştirilir.

public : herkesin kullanabileceği özellik ve davranışlardır
private : sadece kendi sınıfında kullanılabilen özellik ve davranışlardır
protected : sınıf içinde miras alınan alt sınıflar tarafından kullanılır.

Kalıtım: Sınıflar birbirinden türeyebilir. Alt sınıf üst sınıfın özelliklerini alabilir.
Örneğin araba ve bisiklet sınıflarında ortak özellik olarak tekerlek sayısı, hızı… gibi özelliklerini tekrar yazmak yerine bu özellikleri içeren bir sınıf oluşturup miras alabiliriz. Bir sınıftan birden fazla miraz alınıyorsa buna çoklu kalıtım denir.

Çok Biçimlilik: Alt sınıflar üst sınıfın gösterdiği davranışları göstermek zorunda değildir. Alt sınıfların farklı davranışları göstermesine Çok biçimlilik denilmektedir.
Örneğin Gemi ve araba sınıflarını ele aldığımızda bunların hareket tipleri bulunmaktadır. Gemi su üzerinden giderken araba karada hareket etmektedir. Kısaca farklı nesnelerin (araba ve gemi gibi) aynı olaya (hareket tipine) farklı şekilde cevap vermesidir.

Sonuç olarak bu yazıda Nesne Yönelimli Programlamaya gerçek dünya örnekleriyle giriş yapmaya çalıştım. Nesne Yönelimli Programlama daha fazla örnek için, C# programlama diliyle gerçekleştirdiğim örneklere aşağıdaki github adresimden ulaşabilirsiniz.

Umarım faydalı bir yazı olmuştur. Gelecek yazıda görüşmek dileğiyle…

--

--

Furkan Alaybeg

Big Data Engineer | SQL | PySpark | Hadoop | Apache Airflow | Apache Flink