Python Sınıflar ve Nesneler

Python’da sınıflar (classes), nesne tabanlı programlamanın temel taşıdır. Sınıflar, bir nesnenin özelliklerini (değişkenler) ve davranışlarını (metotlar) tanımlayan yapılardır. Nesneler ise sınıfların örnekleridir ve gerçek hayattaki varlıkların yazılım dünyasındaki karşılıklarıdır.


1. Sınıf Nedir?

Sınıf, bir nesnenin şablonudur. Örneğin, bir Araba sınıfı düşünün. Bu sınıfın markası, modeli ve rengi gibi özellikleri; çalıştırma, durdurma gibi davranışları olabilir.

Sınıf Tanımlama

Bir sınıf, class anahtar kelimesi ile tanımlanır:

class Araba:
    def __init__(self, marka, model, yil):
        self.marka = marka
        self.model = model
        self.yil = yil

    def bilgileri_goster(self):
        return f"{self.yil} model {self.marka} {self.model}"

araba1 = Araba("Toyota", "Corolla", 2022)
print(araba1.bilgileri_goster())


2. Nesne Nedir?

Bir sınıftan oluşturulan örnektir. Her nesne, sınıfın özelliklerine ve metotlarına sahiptir.

Nesne Oluşturma

araba1 = Araba()  # Araba sınıfından bir nesne oluşturuldu
print(araba1.marka)  # "Toyota" yazdırılır
araba1.çalıştır()  # "Toyota Corolla çalıştırıldı." yazdırılır

3. Yapıcı Metot (__init__)

Sınıfın her nesnesi oluşturulduğunda otomatik olarak çalışan özel bir metottur. Genellikle nesnenin özelliklerini başlatmak için kullanılır.

Yapıcı Metot Kullanımı

class Araba:
    def __init__(self, marka, model, yıl):
        self.marka = marka  # Nesne özelliği
        self.model = model
        self.yıl = yıl

    def çalıştır(self):
        print(f"{self.marka} {self.model} çalıştırıldı.")

# Nesne oluşturma
araba1 = Araba("Honda", "Civic", 2023)
print(araba1.marka)  # "Honda" yazdırılır
araba1.çalıştır()  # "Honda Civic çalıştırıldı." yazdırılır

4. Sınıf ve Nesne Özellikleri

Sınıf Özellikleri

Sınıfa ait özellikler tüm nesneler tarafından paylaşılır.

class Araba:
    tekerlek_sayısı = 4  # Sınıf özelliği

araba1 = Araba()
araba2 = Araba()

print(araba1.tekerlek_sayısı)  # 4
print(araba2.tekerlek_sayısı)  # 4

Nesne Özellikleri

Her nesneye özel özelliklerdir.

class Araba:
    def __init__(self, marka):
        self.marka = marka  # Nesne özelliği

araba1 = Araba("Toyota")
araba2 = Araba("Ford")

print(araba1.marka)  # "Toyota"
print(araba2.marka)  # "Ford"

5. Metotlar

Normal Metotlar

Nesneye özgü işlemler için kullanılır.

class Araba:
    def __init__(self, marka):
        self.marka = marka

    def çalıştır(self):
        print(f"{self.marka} çalıştırıldı.")

araba1 = Araba("Hyundai")
araba1.çalıştır()  # "Hyundai çalıştırıldı."

Sınıf Metotları

Sınıf seviyesinde işlem yapmak için @classmethod kullanılır.

class Araba:
    tekerlek_sayısı = 4

    @classmethod
    def bilgi_ver(cls):
        print(f"Bir araba {cls.tekerlek_sayısı} tekerleklidir.")

Araba.bilgi_ver()  # "Bir araba 4 tekerleklidir." yazdırılır

Statik Metotlar

Sınıf ya da nesneye bağlı olmayan genel işlemler için kullanılır.

class Araba:
    @staticmethod
    def hız_hesapla(mesafe, zaman):
        return mesafe / zaman

print(Araba.hız_hesapla(100, 2))  # 50.0

6. Miras (Inheritance)

Bir sınıf, başka bir sınıfın özelliklerini ve metotlarını miras alabilir.

Miras Örneği

class Araba:
    def __init__(self, marka):
        self.marka = marka

    def çalıştır(self):
        print(f"{self.marka} çalıştırıldı.")

class ElektrikliAraba(Araba):
    def __init__(self, marka, batarya_kapasitesi):
        super().__init__(marka)
        self.batarya_kapasitesi = batarya_kapasitesi

    def şarj_et(self):
        print(f"{self.marka} şarj ediliyor...")

tesla = ElektrikliAraba("Tesla", 100)
tesla.çalıştır()  # "Tesla çalıştırıldı."
tesla.şarj_et()   # "Tesla şarj ediliyor..."

7. Örnekler

Örnek 1: Öğrenci Sınıfı

class Ogrenci:
    def __init__(self, isim, not_ortalamasi):
        self.isim = isim
        self.not_ortalamasi = not_ortalamasi

    def bilgi_ver(self):
        print(f"{self.isim}, not ortalaması: {self.not_ortalamasi}")

ogrenci1 = Ogrenci("Ahmet", 85)
ogrenci1.bilgi_ver()

Örnek 2: Basit ATM Sınıfı

class ATM:
    def __init__(self, bakiye):
        self.bakiye = bakiye

    def para_cek(self, miktar):
        if miktar <= self.bakiye:
            self.bakiye -= miktar
            print(f"{miktar} TL çekildi. Kalan bakiye: {self.bakiye} TL")
        else:
            print("Yetersiz bakiye!")

    def para_yatir(self, miktar):
        self.bakiye += miktar
        print(f"{miktar} TL yatırıldı. Güncel bakiye: {self.bakiye} TL")

hesap = ATM(1000)
hesap.para_cek(300)
hesap.para_yatir(500)
class Araba:
    def __init__(self,marka,model,yil,km,renk): #yapıcı fonks.
        self.marka=marka
        self.model=model
        self.yil=yil
        self.km=km
        self.renk=renk
    def calistir(self):
        print(self.marka,self.model,"Araç Çalıştırıldı.")
    def bilgiyazdir(self):
        print("Marka: ",self.marka)
        print("Model: ",self.model)
        print("Yıl: ",self.yil)
        print("KM: ",self.km)
        print("Renk: ",self.renk)
        print("________________________")

araba1=Araba("Honda","S2000",2006,43000,"Kırmızı")
araba2=Araba("MG","1.5 HS",2023,10000,"Beyaz")
araba3=Araba("Hyundai","Sonata",2011,420000,"Siyah")
araba2.calistir()
araba2.bilgiyazdir()
araba3.bilgiyazdir()
araba3.calistir()
araba1.bilgiyazdir()
class en1:
    def __init__(self,ad,soyad,memleket,yas):
        self.ad=ad
        self.soyad=soyad
        self.memleket=memleket
        self.yas=yas
    def yazdir(self):
        print("Öğrenci Adı: ",self.ad)
        print("Öğrenci Soyadı: ",self.soyad)
        print("Öğrenci Memleket: ",self.memleket)
        print("Öğrenci Yaş: ",self.yas)
        print("__________________________")

    
ogrenci1=en1("Eymen","Özdemir","Muğla","15")
ogrenci2=en1("Tunahan","Uçar","İzmir","14")
ogrenci1.yazdir()
ogrenci2.yazdir()
class Ogrenci:
    def __init__(self,ad,soyad,notlar):  #Yapıcı veya Kurucu Fonk. Constructor
        self.ad=ad
        self.soyad=soyad
        self.notlar=notlar
    
    def ortalama_hesapla(self):
        return sum(self.notlar) / len(self.notlar)  
        
    def durum(self):
        if self.ortalama_hesapla()>=50:
            return "GEÇTİ"
        else:
            return "KALDI"

    def yazdir(self):
        print(self.ad,"\nOrtalamanız: ",self.ortalama_hesapla(),"\nDurumunuz: ",self.durum())    
        print("______________________________________")

ogr1=Ogrenci("Ali","Öztürk",[60,80,90])        
ogr2=Ogrenci("Serdar","Yasin",[30,50,40])        
ogr1.yazdir()
ogr2.yazdir()

Sonuç

Python’da sınıflar ve nesneler, yazılımı daha düzenli, modüler ve yeniden kullanılabilir hale getirir. Bu yapılar, gerçek dünya varlıklarını programlama dünyasına taşımak için güçlü bir araçtır. Örnekleri inceleyerek ve uygulamalar yaparak, bu konudaki yetkinliğinizi artırabilirsiniz.

guest
1 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
furkan akarsu
furkan akarsu
1 ay önce

hocam iyiki varsınız siz olmasanız ne yapardık örnekler müthiş

1
0
YORUM YAPx