Python’da Nesne Yönelimli Programlama (OOP)

Nesne Yönelimli Programlama (OOP), yazılım geliştirme sürecinde kullanılan ve programları nesneler olarak modelleyen bir programlama paradigmasıdır. Bu nesneler, belirli veri yapıları (özellikler, yani “attributes”) ve bu veri yapılarını işleyen işlevlerden (yani “methods”) oluşur. Python, OOP’yi destekleyen bir dildir ve bu paradigma, büyük ve karmaşık yazılımların daha düzenli ve modüler olmasını sağlar.

1. Temel Kavramlar

OOP’nin temel kavramları şunlardır:

  • Sınıf (Class): Nesnelerin blueprint’idir. Sınıflar, nesnelerin sahip olacağı özellikler ve davranışlar hakkında bilgi içerir.
  • Nesne (Object): Sınıfın bir örneğidir. Nesneler, sınıflarda tanımlanan özelliklere ve davranışlara sahiptir.
  • Özellikler (Attributes): Sınıf veya nesne tarafından kullanılan verileri temsil eder. Örneğin, bir Araba sınıfının renk ve model gibi özellikleri olabilir.
  • Metotlar (Methods): Sınıfın işlevleridir. Nesneler bu işlevleri kullanarak belirli işlemleri gerçekleştirir. Örneğin, Araba sınıfının hareket_et veya dur gibi metotları olabilir.
  • Kalıtım (Inheritance): Bir sınıfın başka bir sınıftan özellik ve metotlarını devralmasına olanak tanır. Bu, kodun yeniden kullanılabilirliğini artırır.
  • Çok Biçimlilik (Polymorphism): Aynı isimdeki metodun farklı sınıflarda farklı şekillerde çalışmasını sağlar.
  • Kapsülleme (Encapsulation): Nesnelerin iç durumunu gizlemek ve yalnızca gerekli kısımlarını dışarıya açmak anlamına gelir.

2. Python’da Sınıf ve Nesne Oluşturma

Python’da bir sınıf tanımlamak için class anahtar kelimesi kullanılır. Sınıflar genellikle büyük harflerle başlar.

a. Sınıf Tanımlama
Örnek:
class Araba:
# Yapıcı Metot (Constructor)
def __init__(self, renk, model):
self.renk = renk # Özellik tanımlama
self.model = model

# Metot Tanımlama
def hareket_et(self):
print(f"{self.model} hareket ediyor.")

def dur(self):
print(f"{self.model} durdu.")
b. Nesne Oluşturma

Bir sınıfı kullanarak nesne oluşturmak, sınıfın bir örneğini yaratmaktır.

Örnek:
# Araba sınıfından nesne oluşturma
araba1 = Araba("Kırmızı", "Toyota")
araba2 = Araba("Mavi", "Honda")# Metotları çağırma
araba1.hareket_et() # Toyota hareket ediyor.
araba2.dur() # Honda durdu.

Bu örnekte, Araba sınıfından iki farklı nesne (araba1 ve araba2) oluşturulur ve bu nesneler üzerinde metotlar çağrılır.

3. Kalıtım (Inheritance)

Kalıtım, bir sınıfın başka bir sınıftan özellik ve metotlarını devralmasını sağlar. Bu, kodun tekrar kullanılabilirliğini artırır ve sınıflar arasında ilişki kurmayı sağlar.

a. Kalıtım Tanımlama
Örnek:
class ElektrikliAraba(Araba): # Araba sınıfından miras alır
def __init__(self, renk, model, batarya_kap):
super().__init__(renk, model) # Üst sınıfın yapıcı metodunu çağırır
self.batarya_kap = batarya_kapdef sarj_et(self):
print(f"{self.model} şarj oluyor.")
b. Kalıtım Kullanımı
Örnek:
# ElektrikliAraba sınıfından nesne oluşturma
tesla = ElektrikliAraba("Beyaz", "Tesla Model S", 100)# Üst sınıftan gelen metotları kullanma
tesla.hareket_et() # Tesla Model S hareket ediyor.
tesla.sarj_et() # Tesla Model S şarj oluyor.

Bu örnekte, ElektrikliAraba sınıfı, Araba sınıfından miras alır ve Araba sınıfındaki özellikleri ve metotları kullanabilir. Ayrıca kendi sarj_et metotunu tanımlar.

4. Çok Biçimlilik (Polymorphism)

Çok biçimlilik, farklı sınıflardaki nesnelerin aynı isimdeki metotları farklı şekillerde kullanmasına olanak tanır. Bu, aynı arayüzü paylaşan farklı sınıfların farklı davranışlar sergilemesine olanak tanır.

a. Çok Biçimlilik Örneği
Örnek:
class Kedi:
def ses_cikar(self):
return "Miyav"class Kopek:
def ses_cikar(self):
return "Hav"# Polymorphism örneği
def sesleri_cikar(hayvan):
print(hayvan.ses_cikar())

kedi = Kedi()
kopek = Kopek()

sesleri_cikar(kedi) # Miyav
sesleri_cikar(kopek) # Hav

Bu örnekte, Kedi ve Kopek sınıfları aynı isimdeki ses_cikar metodunu farklı şekilde uygular. sesleri_cikar fonksiyonu, hangi hayvanın geçtiğine bağlı olarak doğru sesi çıkarır.

5. Kapsülleme (Encapsulation)

Kapsülleme, bir sınıfın iç durumunu dış dünyadan gizlemek için kullanılır. Bu, sınıfın iç veri yapılarına doğrudan erişimi kısıtlar ve güvenli bir erişim sağlar.

a. Özel (Private) Özellikler

Python’da, çift alt çizgi (__) ile başlayan özellikler ve metotlar özel (private) olarak kabul edilir.

Örnek:
class Kisi:
def __init__(self, isim, yas):
self.isim = isim
self.__yas = yas # Özel özellikdef yas_goster(self):
return self.__yas# Nesne oluşturma
kisi = Kisi("Ahmet", 30)

print(kisi.isim) # Ahmet
print(kisi.yas_goster()) # 30
# print(kisi.__yas) # Hata verir: AttributeError

Bu örnekte, __yas özelliği dışarıdan erişilemez, ancak yas_goster metodu ile güvenli bir şekilde erişilebilir.

6. Sınıf ve Statik Metotlar

Python’da, sınıf düzeyinde çalışan metotlar tanımlamak mümkündür. Bu metotlar, belirli bir nesneye bağlı olmadan çalışır.

a. Sınıf Metotları

Sınıf metotları, @classmethod dekoratörü ile tanımlanır ve genellikle sınıfın durumunu değiştirmek veya sınıfla ilgili bilgileri almak için kullanılır. Sınıf metotları, sınıfın kendisini ilk parametre olarak alır (cls).

Örnek:
class Ornek:
sayac = 0def __init__(self):
Ornek.sayac += 1 @classmethod
def kac_tane(cls):
return f"Şu anda {cls.sayac} tane nesne var."

# Nesneler oluşturma
o1 = Ornek()
o2 = Ornek()

print(Ornek.kac_tane()) # Şu anda 2 tane nesne var.
b. Statik Metotlar

Statik metotlar, @staticmethod dekoratörü ile tanımlanır ve sınıf veya nesne durumuna erişmez. Sadece sınıfla ilişkili bir işlevsellik sağlar.

Örnek:
class Hesaplayici:
@staticmethod
def topla(a, b):
return a + bprint(Hesaplayici.topla(5, 10)) # 15

Bu örnekte, topla metodu herhangi bir nesne veya sınıf durumuna ihtiyaç duymadan çalışır.

Nesne Yönelimli Programlama (OOP), yazılım geliştirme sürecinde büyük ve karmaşık projeleri daha yönetilebilir hale getirir. Python, OOP’yi destekleyen bir dil olarak, sınıflar, nesneler, kalıtım, çok biçimlilik ve kapsülleme gibi temel OOP kavramlarını uygulamanıza olanak tanır. Bu yapı, kodun tekrar kullanılabilirliğini, bakımını ve okunabilirliğini artırır. OOP’yi anlamak ve doğru uygulamak, Python‘da daha sağlam ve esnek yazılımlar geliştirmenize yardımcı olur.

 

Nesne Yönelimli Programlama (OOP)

Comments

“Python’da Nesne Yönelimli Programlama (OOP)” için 4 yanıt

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.