(Object Oriented Programming) OOP Nedir ?

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 Programlama bilgisine sahip olması ve 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 hayattan çö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…vb 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 özelliklerinın 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 nesnenın sınıf içinde değişiklik yapmak 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.
  • Sınıflar oluşturarak daha az kod oluşturup daha fazla iş yapı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ı önlediği için geliştirme sürecinin verimliliğini artırır.

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ı metodlarla 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 4 özellikten birini sağlamayan programlama dili nesne yönelikli programlama dili 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ıfta kullanılabilen özellikler ve davranışlardır
protected : sınıf içinde ve miras alınan alt sınıflarda 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.

Yazı Alıntılanmıştır : KAYNAK