Nesne Yönelimli Programlama (OOP), Object Oriented Programming şeklinde İngilizce dilinden Türkçeye çevrilen yazılım tasarımını veri veya nesneler etrafında kümeleyen programlama dil modeline denir. Nesne Tabanlı Programlama olarak da bilinen OOP, işlevler ve mantık kullanmanın aksine, günlük hayatta görülen pek çok nesnenin yazılım dili ile bilgisayar ortamına dâhil edilmesini kapsar.
Sınıf tabanlı olarak bilinen OOP dilleri, birtakım yöntemlerle bir grup veri yığını oluşturur. Bu yığın, dil içerisinde “nesne” olarak tanımlanır ve bu birim içerisinde birleştirilir. Popüler sınıf tabanlı OOP dilleri arasında PHP, Swift, Java, Python ve C++ gibi diller yer alır.
Nesne Yönelimli Programlama Nedir?
Nesne Yönelimli Programlama, sınıf ve nesne odaklı olarak ihtiyaç duyulan programı daha küçük parçalar halinde bölen, yönetebilen ve yeniden kullanılabilir hale getiren bir programlama diline denir. Her işlev nesne yığınları olarak soyutlanır: her nesne ortak özellikleri ile kümelenir ve aynı zaman farklı özellikleriyle de tanımlanır.
OOP Ne Demek?; OOP, Türkçe diline Object Oriented Programming şeklinde İngilizce dilinden çevrilmiş Nesne Yönelimli veya Nesne Tabanlı Programlama demektir. Her işlevin nesnel olarak soyutlandığı ve birleştirildiği bu programlama dillerinde, aynı sınıftan birden fazla bağımsız nesne başlatılabilir, temsil edilebilir veya birbirleriyle karmaşık yollarla etkileşim kurabilir. Bu bağlamda, bir sınıfın veri niteliği tanımlanabilmesi ve sınıf örneği taşıyabilmesi için bir plan olarak işlev görmesi gereklidir. Bununla birlikte, her küçük parçanın kendine ait özelliği, verileri ve diğer küçük parçalarla nasıl iletişim kurulacağı programlama dili içerisinde yer almaktadır.
Nesne Yönelimli Programlama Temel Prensipleri
Nesne Yönelimli Programlama Temel Prensipleri, kalıtım; çok biçimlilik, soyutlama ve sarma olmak üzere 4 temel kavram ve ilkeyi içerir. Kavram ve ilkeler, kendi içlerinde farklı fonksiyonlar ve görevler barındırır.
Bununla birlikte, kavramlar oldukça karmaşık ve farklı görünse de nasıl çalıştığı anlaşıldığı takdirde, öğrenilmesi kolaydır. Ayrıca, çalışma mekanizmasının öğrenilmesi, OOP bilgisayar programlarının temellerini de geliştiriciye aktaracaktır.
Nesne yönelimli veya nesne tabanlı olarak tanımlanan programlama sistemlerinin 4 temel prensipleri şöyledir:
1. Encapsulation (Sarma-Kapsülleme)
Encapsulation (Sarma-Kapsülleme), nesne yönelimli bir programlama dilinin en temel prensiplerinden bir tanesini oluşturur. Verilerin, sınıfların ve metotların kullanıcı tarafından ne kadarının görüntüleneceği, saklanacağı ve değiştirilebileceği sınırlarını belirlemeyi ifade eder. Bu alanda yapılan değişiklikler veya gelişimler, diğer kimseler tarafından görüntülenebilir. Dolayısıyla oldukça güvensiz bir sınıf çeşidini oluşturmakla birlikte bir projenin içyapısını değiştirecek metotların görünmesi önerilmez.
2. Polymorphism (Çok biçimlilik)
Nesne yönelimli programlama içerisinde çok biçimlilik olarak ifade edilen Polymorphism, farklı tip verileri ve sınıfları farklı şekilde işleme yeteneğini belirtir. Sistem içerisinde belirtilen metotları ve türetilmiş sınıfları yeniden tanımlar. Bununla birlikte, şeklin ne olduğu fark etmeksizin program kullanıcıya doğru alanı vermesi için fonksiyon gösterir.
3. Inheritance (Kalıtım)
Bir sınıftan başka bir sınıf üretmeyi sağlar ve aralarında alt-üst ilişkisi kurarak kalıtımsal bir mekanizma oluşturur. Bu sınıflar arasında başka sınıfların inşa edilmesini sağlayan sisteme ise Inheritance (Kalıtım) adı verilmektedir. Var olan sınıfların üzerine yeni bir sınıf kurulmasını sağlayan sistem, aynı zamanda kendi içerisinde 5 çeşide ayrılmaktadır: bunlar, tekli kalıtım; çoklu kalıtım, çok seviyeli kalıtım, hiyerarşik kalıtım ve melez kalıtım’dır.
4. Abstraction (Soyutlama)
Abstraction yani soyutlama, alt sınıflar içerisinde ortak özellikler gösteren verileri, nesneleri yokken, bir üst sınıf oluşturmak için kullanılır. Verilerin ortak özellik ve işlevler taşıması gereklidir. Üst sınıf olarak da bilinen Abstraction, soyut sınıfın yöntemlerinin alt sınıfları tarafından şablon halinde yazılması için de tercih edilir. Aynı zamanda soyutlama, otomatik olarak soyut sınıf oluşturabilir ancak soyut sınıflardan nesne oluşturamaz.
Nesne Yönelimli Programlama (OOP) Ne İşe Yarar?
Değişkenleri ve metotları bir arada tutan veya saklayan sınıf sisteminde, OOP, verileri saklamakla birlikte veriler üzerinde işlem yapabilmektedir. Yapılan işleme göre bir kişinin adı, soyadı, yaşı, kilosu ve boyu gibi pek çok özellikleri içerisinde barındırmaktadır. Bu açıdan bakıldığında OOP, yazılım dünyasındaki karışıklığı çözmek amacıyla oluşturulmuştur denilebilir. Yazılımların boyutlarının artması, harcanan zaman ve çaba, nesneye yönelik olarak programlama dillerinin gelişmesine vesile olmuştur.
Nesne yönelimli olarak tanımlanan programlama ne işe yarar?
- Nesnelerin birbirinden bağımsız olarak tutulması, bilgi gizliliğini avantajı sağlar.
- Sınıflar sayesinde tüm projede değişiklik yapmanın aksine tek bir sınıfta değişiklik yapılabilir. Sınıf, küme içerisinde olacağı için tüm projede çalışma sağlanabilir.
- Zaman kaybını azaltır ve verimliliği artırır.
- Sınıf sisteminin oluşturulmasıyla beraber uzun kodları tekrar yazmak yerine kısa kodlamalar kullanılabilir.
- Değişkenler ve metotlar, bir arada saklayan bir sistem sunar.
- Verileri saklar ve veriler üzerinde işlem yapmaya imkân tanır.
Yukarıda yer alan faydalar göz önünde bulundurulduğunda nesne yönelimli veya tabanlı olarak ifade edilen programlama dilleri geliştiriciler için oldukça faydalı görülmektedir.
Nesne Yönelimli Programlama Dilleri Nelerdir?
Nesne Yönelimli Programlama Dilleri, içerisinde Java, C#, C++, Ruby, Simula, Smalltalk, Visual Basic, PHP, Python, Eiffel ve Object Pascal gibi pek çok nesne tabanlı olan dil bulunur. Programcının kendi sınıfını ve nesnesini oluşturup işlem yapmaya imkân tanıyan OOP, genellikle nesneye yönelik olan ve visual özellikler içeren sürümler için tercih edilmektedir.
Nesne yönelimli ve nesne tabanlı programlama dilleri şunlardır:
- Swift
- Delphi
- Perl
- Objective-C
- Common Lisp
- Fortran 2003
- SimScript
- Haxe
- ActionScript
- Ada
Bu diller arasında ailenin her üyesi için sınıftan kişi nesneleri başlatabilir ve bir aile kümesi oluşturabilir. Her kişi, benzersiz ve özgün olduğundan nesneler farklı veriler içerebilir.
Sonuç olarak mantıksal işlemlerden ziyade nesnelere ve nesneler üzerindeki işlemlere dayanan Nesne Yönelimli Programlama (OOP), en fazla kullanılan ve popüler dilleri içerisinde barındırır. Zamandan tasarruf sağlamak, maliyetsiz işlem yapmak ve yazılımın dünyasının karmaşasından uzaklaşmak için OOP geliştiriciler tarafından sıklıkla tercih edilir. Bununla birlikte, her yazılımcının kütüphanesinde mutlaka bir OOP dilinin de bulunması gerektiği unutulmamalıdır.