Nesne Yönelimli Programlama (OOP) Nedir?
Nesne yönelimli programlama, programı veri ve o veriyle çalışan işlevleri bir arada tutan nesneler üzerine kurma yaklaşımıdır. Sınıf, nesne, kapsülleme ve kalıtım temel kavramlarıdır.
Büyük bir programı tek parça halinde yazmak zordur. Nesne yönelimli programlama (İngilizcesi Object-Oriented Programming, kısaca OOP) programı, gerçek dünyadaki şeylere benzeyen nesnelere bölerek düzenler.
Sınıf ve nesne
- Sınıf, bir şeyin kalıbıdır: hangi bilgileri taşıyacağını ve neler yapabileceğini tanımlar.
- Nesne, o kalıptan üretilmiş somut bir örnektir.
class Hesap:
def __init__(self, sahip, bakiye=0):
self.sahip = sahip
self.bakiye = bakiye
def yatir(self, tutar):
self.bakiye += tutar
ayse = Hesap("Ayşe")
ayse.yatir(500)
print(ayse.bakiye) # 500
Burada Hesap bir sınıf, ayse ise o sınıftan üretilmiş bir nesnedir. Nesnenin bilgilerine özellik (sahip, bakiye), yapabildiği işlere metot (yatir) denir.
Dört temel kavram
Kapsülleme
Nesnenin verisi ve o veriyi değiştiren işlemler bir arada durur. Dışarıdaki kod bakiyeyi doğrudan değiştirmek yerine yatir gibi metotları kullanır; böylece kurallar (ör. eksi tutar yatırılamaz) tek yerde korunur.
Kalıtım
Bir sınıf, başka bir sınıfın özelliklerini devralabilir:
class VadeliHesap(Hesap):
def faiz_ekle(self, oran):
self.bakiye += self.bakiye * oran
VadeliHesap, Hesapın her şeyini taşır ve üstüne kendi metodunu ekler.
Çok biçimlilik
Farklı sınıflar aynı adlı metodu kendi bildikleri gibi uygulayabilir. Örneğin Kare ve Daire sınıflarının ikisinde de alan() metodu olabilir ama hesaplama farklıdır; onları kullanan kod hangisi olduğunu bilmeden alan() çağırabilir.
Soyutlama
Kullanan kişi yalnız ne yapılacağını bilir, nasıl yapıldığının ayrıntısıyla uğraşmaz. Arabayı sürmek için motorun içini bilmek gerekmez.
Ne zaman işe yarar?
- Birbiriyle ilişkili veri ve işlemlerin çok olduğu, büyüyen projelerde
- Benzer ama küçük farkları olan birçok parçanın olduğu durumlarda (ör. bir oyundaki farklı karakter türleri)
Küçük betiklerde ise basit fonksiyonlar çoğu zaman yeterlidir; OOP bir zorunluluk değil, bir düzenleme biçimidir.
OOP'nin amacı kodu daha anlaşılır ve değiştirilmesi kolay hale getirmektir: her nesne kendi işinden sorumludur.
İlgili Makaleler
Programlama Dili Nedir?
Programlama dili, bilgisayara ne yapması gerektiğini anlatmak için kullanılan, kurallı bir yazma biçimidir.
Algoritma Nedir?
Algoritma, bir problemi çözmek için izlenen, adım adım ve belirli bir sırayla tanımlanmış işlemler bütünüdür.
API Nedir?
API, farklı yazılımların birbiriyle konuşmasını sağlayan, kurallı bir arayüz ve sözleşmedir.