Nesne tabanlı programlama dili, yazılım geliştirirken Nesne (programlama) kavramını temel alan ve özellikle kapsülleme ilkesini destekleyen programlama dillerini tanımlar. Ancak bu diller, kalıtım ve çok biçimlilik gibi özellikleri içermek zorunda değildir. Bu nedenle, tüm nesne yönelimli programlama dilleri aynı zamanda nesne tabanlıdır; ancak her nesne tabanlı dil, nesne yönelimli değildir.
Bu ayrım özellikle yazılım geliştirme ilkeleri açısından önemlidir. Örneğin, SOLID ilkeleri yalnızca nesne yönelimli programlama bağlamında uygulanabilir; çünkü bu ilkeler, kalıtım ve çok biçimlilik gibi nesne yönelimli paradigmaların varlığını varsayar. Nesne tabanlı ama nesne yönelimli olmayan dillerde bu ilkeleri doğrudan uygulamak mümkün değildir.
Nesne yönelimli olan diller
Aşağıdaki diller nesne tabanlı olup aynı zamanda nesne yönelimlidir:
- C++ (nesne modeli Simula'ya dayanır)
- Java
- C#
- Python
- Ruby
- Smalltalk
- Eiffel
- Object Pascal
- Objective-C (nesne modeli Simula'ya dayanır)
- Visual Basic .NET
- ABAP/4
- REALbasic
Nesne yönelimli olmayan, ancak nesne tabanlı diller
Aşağıdaki diller nesne kavramını ve sınıfları desteklemekle birlikte, tam anlamıyla nesne yönelimli değildir çünkü kalıtım gibi temel özellikleri eksiktir:
- Ada
- JavaScript (prototip tabanlıdır, sınıf tabanlı değildir)
- Visual Basic (klasik sürümler)
Örnek
Aşağıda, JavaScript dilinde nesne tabanlı fakat kalıtım kullanılmayan basit bir örnek yer almaktadır:
let araba = {
marka: "Toyota",
model: "Corolla",
çalıştır: function() {
console.log(this.marka + " çalıştı.");
}
};
araba.çalıştır(); // Toyota çalıştı.
Bu örnekte nesne ve yöntem (metot) tanımı yapılmıştır; ancak kalıtım veya sınıf yapısı kullanılmadığı için nesne yönelimli değil, yalnızca nesne tabanlıdır.
Nesne yönelimli bir örnek (Python)
Aşağıda, aynı kavramların nesne yönelimli biçimde Python dilinde nasıl uygulandığını gösteren bir örnek verilmiştir:
class Araba:
def __init__(self, marka, model):
self.marka = marka
self.model = model
def çalıştır(self):
print(f"{self.marka} çalıştı.")
araba = Araba("Toyota", "Corolla")
araba.çalıştır() # Toyota çalıştı.
Burada hem sınıf tanımı hem de nesne yaratımı yapılmış, yani kalıtım ve diğer OOP özellikleri için zemin hazırlanmıştır.
Kaynakça
- ^ a b Booch, Grady (2007). Object-Oriented Analysis and Design with Applications. Addison-Wesley. s. 45-48. ISBN 978-0-321-31336-2.
- ^ a b c Sebesta, Robert W. (2012). Concepts of Programming Languages (10 bas.). Pearson. s. 520-523. ISBN 978-0-13-607347-5.
- ^ Stroustrup, Bjarne (2013). The C++ Programming Language (4 bas.). Addison-Wesley. s. 50-55. ISBN 978-0321563842.
- ^ "Working with Objects - JavaScript". MDN Web Docs. 10 Mayıs 2025 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Mayıs 2025.
- ^ "Python Classes". Python Software Foundation. 23 Ekim 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Mayıs 2025.
