Python'da Nesne Tabanlı Programlama - Class Yapıları

by trustix


Eklenme Tarihi : 22 Aralık 2020 18:08 Views:     702



Python'da Nesne Tabanlı Programlama

Programlama dilleri farklı kriterlere göre farklı şekillerde sınıflandırılabilir. Örneğin insan-makine etkileşimi en zor olanlar düşük seviyeli, en kolay olanlar yüksek seviyeli programlama dili kabul edilir.

Benzer bir şekilde çalışma prensiblerine göre de programlama dilleri kategorize edilmektedir. Bu kategorizasyon şu şekildedir: Yapısal programlama(structured programming), doğrusal programlama ve nesne yönelimli programlama. Yapısal programlamada yazılan kodlar amaçlarına göre daha küçük parçalara ayrılarak yazılır. Bu şekilde sistemin, tasarımın, uygulamanın ya da programın herhangi bir noktasına müdahale etmek kolaylaşır. Doğrusal programlama bir problemin çözümünün eldeki mevcut kaynaklar ile en ideal ve kaynakların en ekonomik şekilde kullanılması prensibine dayanan bu doğrultuda problemin çözüm kodlarının alt alta yazıldığı problemin büyüdükçe kodların karmaşıklaştığı bir yapıdır. Nesne Tabanlı/Yönelimli Programla(OOP) ise mantıksal işlemlerden ya da matematiksel işlemlerden daha çok objelere ve bu objelerin arasındaki etkileşime odaklanan ve sorunlara bu yöntem ile çözüm bulmaya çalışan bir programlama paradigması modelidir. Bir programlama dilinin Nesne Tabanlı Programlama dili sayılabilmesi  dört temel kavramı ve bileşeni barındırması gerekmektedir. Bunlar Encapsulation, Inheritance, Polymorphism ve Abstraction'dur. Buradaki dört temel kavramın incelenmesi başka bir içeriğin konusudur. Burada temel bilgileri verdikten sonra Python'daki Class yapılarına değinmeye çalışacağız.

Python'da Nesne Tabanlı Programlama - Class Yapıları

Python'da koleksiyon veri türlerinden olan listeler, tuplelar, sözlükler gibi veri yapıları birer obje olarak kabul edilir. Aynı şekilde fonksiyonlar da birer obje gibi davranmaktadır. Python'daki bu nesnelerin varlığına ek olarak geliştiriciler kendi objelerini oluşturabilir ve bu objelere belirli özellikler tanımlayabilirler. Geliştiricinin kendi objesini oluşturmasının ilk adımı Class/Sınıf yapısını tanımlamasıdır. Çünkü bir objenin nasıl oluşturulacağı ve hangi metotları kullanacağı Class dediğimiz yapı ile belirlenmektedir.

Python'da Sınıf/Class Nasıl Oluşturulur?

# Python'da Sınıf/Class Oluşturma


"""
    Python'da bir sınıflar class
    anahtar kelimesi ve sonrasında
    class'a verilecek isim ile
    oluşturulur. Ayrıca Class isimleri
    standart olarak büyük harfle başlamalıdır.
    Örneğin:
"""


class  Home():
    pass
  

 

Yukarıda herhangi bir metot veya özelliği belirlenmemiş Home adında bir class oluşturduk. Home classı altında oluşturacağımz bütün nesneler Home classı içerisinde belirlenmiş özelliklere sahip olacaktır. Yukarıdaki örneği biraz daha geliştirelim.

# Python'da Sınıf/Class Oluşturma

class  Home():
    m2 = '400'
    oda = '5+1'
    kat = '5'
    renk = 'Beyaz'
    cephe = 'Kuzey'
    
    
"""
    Burada tanımladığımız sınıf ve belirtmiş
    olduğumuz özelliklere göre obje oluşturabiliriz.
    Bu sınıftan oluşturulacak olan 
    her obje sınıf içerisinde belirlenmiş olan 
    özelliklere sahip olacaktır.
"""
  

 

 

Python'da Obje Nasıl Oluşturulur?

Yukarıda bir sınıf ve bu sınıfın özelliklerini tanımlamış olduk. Şimdi ise bu sınıfta belirlenmiş olan özelliklere sahip bir obje oluşturalım.

# Python'da Obje  Oluşturma

class  Home():
    m2 = '400'
    oda = '5+1'
    kat = '5'
    renk = 'Beyaz'
    cephe = 'Kuzey'



h1 = Home()
print(h1)
# Output: <__main__.Home object at 0x000001F3B25F0548>

"""
    Buradaki gibi Class adını belirterek bir obje oluşturabiliriz.
    Print çıktısı bize bir obje oluşturulduğunu ve bunun hafızada belirli
    bir yerde olduğunu göstermektedir. Objeyi oluşturduk ancak objenin herhangi
    bir özelliğine erişmedik. Oluşturulan bir objenin özelliğine erişmek için
    sınıf içerisinde tanımlanmış olan özelliğin anahtar kelimesini kullanmamız 
    gerekmektedir. Örneğin:
"""

print(h1.cephe)
# Output: Kuzey
  

 

Buraya kadar bir sınıf nasıl oluşturulur ve bu sınıftan bir obje nasıl üretilir bunu inceledik. Ancak örnekler incelendiğinde karşımıza oluşturulan bütün objelerin aslında aynı özelliklere sahip olduğu çıkacaktır. Bunun sebebi ise objelerin özelliklerini direkt sınıf içerisinde belirtmiş olmamızdır. Yani bir Home sınıfında onlarca obje de üretsek bu objelerin hepsi aynı metrekare değerine aynı oda sayısına aynı renge ve aynı cephe özelliğine sahip olacaktır. Oysa biz oluşturulacak her objenin farklı değerlere sahip olabileceği biliyoruz. Bir evin oda sayısı 1+1 olabilir 3+1 olabilir ya da bir ev kuzey cepheli  bir ev güney cepheli olabilir. Bu durumda oluşturulacak her objenin farklı özelliklere sahip olabilmesi için Python'da kullanılan temel bir fonksiyon vardır. Bu fonksiyon __init__() fonksiyonudur. Bir nesne oluşturmanın avantajlarını sağlayabilmek için bu fonksiyonun kullanımını incelemeye çalışalım.

# Python'da Obje  Oluşturma


"""
    Python' da bir sınıf oluşturulurken Python
    tarafından bu sınıfa belli metot, fonksiyon ve
    özellikler default olarak atanır. Bu fonksiyonlardan
    biri __init__() fonksiyonudur. Geliştirici
    oluşturduğu her objenin farklı değerlere
    sahip olabilmesini istiyor ise
    bu fonksiyonu aşağıdaki örnekte olduğu
    gibi kendisi tanımlamalıdır.
"""



class  Home():
    def __init__(self, m2, oda, kat, renk, cephe):
        self.m2 = m2
        self.oda = oda
        self.kat = kat
        self.renk = renk
        self.cehpe = cephe



h1 = Home('300', '2+1', '4', 'Gri', 'Batı')
h2 = Home('275', '4+1', '7', 'Beyaz', 'Güney')
h3 = Home('400', '5+1', '2', 'Sarı', 'Doğu')


print(h1.cehpe) # Output: Batı
print(h2.cehpe) # Output: Güney
print(h3.cehpe) # Output: Doğu

"""
    Oluşturduğumuz her objenin
    özellik ve değerlerini sınıftan  direkt almak
    yerine daha dinamik ve daha kullanışlı olacak
    şekilde kendimiz belirttik.
"""
  
# Python'da Obje  Oluşturma
"""
    Bir class oluşturduktan sonra __init__() fonksiyonu
    ile belirlenen özelliklere buradaki örnekte olduğu
    gibi varsayılan bir değer de belirtilebilir.
    Bu durumda oluşturulan objeye eğer özellik değer
    belirtilmez ise bu durumda sınıftan direkt olarak
    bu değerleri alacaktır.
"""

class  Home():
    def __init__(self, m2 = '100 m2 den fazla', oda ='En az iki odalı', kat = '1', renk = 'Beyaz', cephe = 'Doğu'):
        self.m2 = m2
        self.oda = oda
        self.kat = kat
        self.renk = renk
        self.cehpe = cephe



h1 = Home('300', '2+1', '4', 'Gri')
h2 = Home('275', '4+1', '7', 'Beyaz')
h3 = Home('400', '5+1', '2', 'Sarı')

print(h1.cehpe) # Output: Doğu
print(h2.cehpe) # Output: Doğu
print(h3.cehpe) # Output: Doğu

"""
    Classımızı tanımlarken obje özelliklerine varsayılan bir değer belirttik.
    Bu durumda oluşturduğumuz objelerin cephe değeri girilmediğinde
    varsayılan olarak üçü de Doğu olarak belirtilmiş oldu.
"""
  

 

Evet arkadaşlar  Python Nesne Tabanlı Programlama'da Sınıf/Class yapılarından bahsetmeye çalıştık. Bir class nasıl oluşturulur? Classtan obje nasıl üretilir? Bu objelere varsayılan değerler nasıl atanır? __init__() fonksiyonunun class yapılarında nasıl bir işlevi vardır? gibi sorulara cevap vermeye çalıştık.

print('Herkese İyi Kodlamalar')

 





0

Yorum Formu

vikikod.com    © 2019