Yazılım mühendisliği okuyan öğrenciler veya yazılıma ilgi duyan hemen hemen tüm potansiyel yazılımcılar genel olarak programlama dilleri konusunda karmaşık fikirlere sahiptir. Programlama dillerini tasnif eden alt sınıflar karmaşık fikirleri bir nebze olsun ortadan kaldırmaya yardımcı olur.
Geçtiğimiz yetmiş yıl boyunca programlama dilleri büyük oranda genişledi. Bu zenginlik programlama dillerine çeşitli sınıflandırmalar yapılması zorunluluğunu ortaya çıkardı. Yazılım hizmet ve ürünlerinin çeşitlenmesi nedeniyle programlama dilleri spesifik alanlara hitap etmeye başladı. Örneğin SQL ve NoSQL veritabanı yönetimi amaçlı kullanıldı. Peki neden bazı programlama dilleri nesne yönelimli dil (object-oriented languages) olarak tanımlanırken bazıları zorunlu dil veya fonksiyonel dil olarak tanımlanıyor?

Programlama dilleri esasında yapay olarak üretilmiş dillerdir ve bu nedenle insanların konuştukları dillerin organik gelişiminden farklı bir yol benimser. Her bir programlama dilinin bir tasarım felsefesi ve söz dizimi vardır.
Nesne yönelimli dil nedir?
Nesne yönelimli programlama (İngilizce’de kısaca OOP kavramıyla ifade edilir), yazılım tasarımını işlevler ve mantıktan ziyade veriler veya nesneler etrafında organize eden bir bilgisayar programlama modelidir. Bir nesne, benzersiz niteliklere ve davranışa sahip bir veri alanı olarak tanımlanabilir.[1]
“Veya World of Warcraft gibi devasa bir çevrimiçi çok oyunculu oyunda avatarınızın performansını artırmak için bir bot oluşturuyor olabilirsiniz. Bu durumda, muhtemelen davranış sınıflarını ifade etmeye yardımcı olacak nesne yönelimli bir uzantıya sahip Lua gibi bir betik dili kullanıyorsunuzdur.”[2]
Nesne yönelimli programla dilleri sınıf (classes) kavramına dayanır. Sınıflar, soyut veri türlerine benzer ve bir örnek üzerinde gerçekleştirilebilecek işlemlerle birlikte sınıfın bir örneğini (veya bir nesnesini) temsil etmek için gereken veri yapılarının tanımlarından oluşur. Smalltalk nesne yönelimli bir dilin en zengin örneğidir. C++ ve Eiffel gibi daha yeni diller emir kiplidir, ancak nesne yönelimli sınıfları barındırır. Bu türden programlama dilleri bir sınıf örneğiyle etkileşimi, katı bir dizi işlemle sınırlamak için olanaklar içerirler.[3]
Nesne yönelimli bir programın organizasyonu, aynı zamanda, projelerin gruplara ayrıldığı işbirlikçi geliştirme için yöntemi fayda sağlar. OOP’nin ek faydaları arasında kodun yeniden kullanılabilirliği, ölçeklenebilirliği ve verimliliği yer alır.
Nesne yönelimli dillerin yapısı
- Sınıflar (Classes): Sınıflar, bireysel nesneler, nitelikler ve yöntemler için plan görevi gören kullanıcı tanımlı veri türleridir.
- Nesneler (Objects): Nesneler, özel olarak tanımlanmış verilerle oluşturulan bir sınıfın örnekleridir. Nesneler, gerçek dünyadaki nesnelere veya soyut bir varlığa karşılık gelebilir. Sınıf başlangıçta tanımlandığında, tanımlanan tek nesne tanımdır.
- Yöntemler (Methods): Yöntemler, bir nesnenin davranışlarını tanımlayan bir sınıf içinde tanımlanan işlevlerdir. Sınıf tanımlarında yer alan her yöntem, bir örnek nesneye başvuru ile başlar. Ek olarak, bir nesnede bulunan alt rutinlere örnek yöntemler denir. Programcılar, yeniden kullanılabilirlik veya işlevselliği bir seferde bir nesne içinde kapsüllenmiş halde tutmak için yöntemler kullanır.
- Öznitelikler (Attributes): Nitelikler sınıf şablonunda tanımlanır ve bir nesnenin durumunu temsil eder. Nesneler, nitelikler alanında depolanan verilere sahip olacaktır. Sınıf nitelikleri sınıfın kendisine aittir.
Nesne yönelimli dillere örnekler nelerdir?
Simula ilk nesne yönelimli programlama dili olarak kabul edilirken günümüzde OOP ile birlikte birçok başka programlama dili kullanılmaktadır. Ancak bazı programlama dilleri OOP ile diğerlerinden daha iyi eşleşir. Örneğin, saf OOP dilleri olarak kabul edilen programlama dilleri, her şeyi nesne olarak ele alır. Diğer programlama dilleri öncelikle OOP için tasarlanmıştır, ancak bazı prosedürel süreçler dahil edilmiştir.
Nesne yönelimli programlama dilleri için en iyi örnekler Ruby, Scala, JADE ve Emerald’dır. Başlangıçta nesne yönelimli olarak tasarlanan diğer dillere ise Java, Python ve C++ örnek olarak gösterilebilir.
Yazılım öğrenmek için nesne yönelimli bir dil tercih etmek doğru mu?
Programlama dillerinin popülerliği belki biraz kafa karıştırıcı görünebilir. Yazılımcılar, iyi bir yazılım eğitimi alınması için nesne yönelimli bir dilin tercih edilmesinde fayda görüyorlar.
Referanslar
Friedman, D. P., & Wand, M. (2008). Essentials of programming languages. Books24x7.com.
Morris, D., & Tamm, B. G. (Eds.). (1993). Concise Encyclopedia of Software Engineering. Elsevier Science & Technology Books.
Dipnotlar
[1] “What is Object-Oriented Programming (OOP)? – TechTarget.” https://www.techtarget.com/searchapparchitecture/definition/object–oriented–programming–OOP. Erişim tarihi: 5 Ağu. 2022.
[2] (Friedman & Wand, 2008, s. xii)
[3] (Morris & Tamm, 1993, s. 4)

