Nesne Tabanlı Programlama (Object-Oriented Programming, OOP), yazılımı nesneler ve bu nesnelerin etkileşimleri üzerine kuran bir yaklaşımdır. Python, OOP destekleyen ve bu yapıyı uygulamak için basit bir sözdizimi sunan bir programlama dilidir.
1. Sınıf (Class) ve Nesne (Object) Nedir?
- Sınıf: Nesnelerin şablonudur. Davranışlar (fonksiyonlar) ve özellikler (değişkenler) tanımlanır.
- Nesne: Sınıftan üretilmiş, somut bir yapıdır.
Örnek:
class Araba:
def __init__(self, marka, model):
self.marka = marka
self.model = model
def bilgi_goster(self):
print(f"Araba: {self.marka} {self.model}")
# Nesne oluşturalım
araba1 = Araba("Toyota", "Corolla")
araba1.bilgi_goster()
2. __init__
Metodu
Bu metod, bir sınıftan nesne oluşturulduğunda çalışan yapıcı (constructor) fonksiyondur. self
, oluşturulan nesnenin kendisini temsil eder.
3. Nitelikler (Attributes) ve Metotlar (Methods)
- Nitelikler: Nesneye ait verilerdir.
- Metotlar: Nesneye ait işlevlerdir.
class Ogrenci:
def __init__(self, isim, yas):
self.isim = isim
self.yas = yas
def selamla(self):
print(f"Merhaba, ben {self.isim}, {self.yas} yaşındayım.")
ogrenci1 = Ogrenci("Ali", 21)
ogrenci1.selamla()
4. Kalıtım (Inheritance)
Bir sınıfın, başka bir sınıfın özelliklerini devralmasıdır.
class Hayvan:
def ses_cikar(self):
print("Bir ses çıkardı")
class Kedi(Hayvan):
def ses_cikar(self):
print("Miyav")
kedi1 = Kedi()
kedi1.ses_cikar()
5. Çok Biçimlilik (Polymorphism)
Farklı sınıfların, aynı metodu farklı şekillerde kullanabilmesidir.
class Kus:
def konus(self):
print("Cik cik")
class Papağan:
def konus(self):
print("Merhaba!")
def hayvan_konustur(hayvan):
hayvan.konus()
hayvan_konustur(Kus())
hayvan_konustur(Papağan())
6. Kapsülleme (Encapsulation)
Verilerin doğrudan erişimini kısıtlayarak, sadece metotlar aracılığıyla erişim sağlanmasıdır.
class BankaHesabi:
def __init__(self, bakiye):
self.__bakiye = bakiye
def bakiye_goster(self):
print(f"Bakiyeniz: {self.__bakiye} TL")
def para_cek(self, miktar):
if miktar <= self.__bakiye:
self.__bakiye -= miktar
print("Para çekildi.")
else:
print("Yetersiz bakiye.")
hesap = BankaHesabi(1000)
hesap.bakiye_goster()
hesap.para_cek(200)
hesap.bakiye_goster()
Bu temel yapılarla Python’da nesne tabanlı programlamanın temelleri atılabilir. Gerçek dünyadaki nesneleri yazılıma daha yakın ve modüler yapılarda modellemek için OOP olmazsa olmazdır.