Python Nesne Tabanlı Programlama 1

Ceydanur İlhan
4 min readJul 20, 2022

--

Herkese merhaba!

SistersLab’in Toplum Gönüllüleri Vakfı tarafından desteklenen Women in Tech Academy proje katılımcılarından biriyim. Proje, 20–28 yaş aralığındaki 25 kadını 3 ay boyunca yazılım eğitimleriyle güçlendirerek sektörde iş gücüne katılımını hedefliyor. Projeyle ilgili daha fazla bilgiye bu linkten ulaşabilirsiniz.

Bu yazımda Python’da nesne tabanlı programlamadan bahsedeceğim. Eğer nesne tabanlı programlama mantığına aşina değilseniz terminolojideki terimler karışık ve zor gelebilir ama bu terimleri gerçekten anlayıp pratikle desteklediğimiz zaman nesne tabanlı programlama yaklaşımını bilmeyen programcılardan kesinlikle bir adım daha ileride oluruz.

Kodlama yaparken amacımız sadece çalışan bir kod yazmak değildir. Her zaman daha kısa, anlaşılır ve hızlı programlar yazmaya çalışırız. Klasik olarak yazdığımız kodlara yeni kodlar ekledikçe programımız daha karmaşık hale gelir ve kodları anlamak zorlaşır. Bu durumların önüne geçmek için nesne tabanlı programlamadan faydalanabiliriz. O zaman hiç zaman kaybetmeden başlayalım.

Nesne Tabanlı Programlama Nedir ?

Nesne tabanlı programlama yaklaşımı yazdığımız programı daha küçük parçalara bölerek, yönetilebilir ve yeniden kullanılabilir hale getirmemizi sağlayan bir programlama yaklaşımıdır. Böldüğümüz her küçük parçanın kendine ait özelliği, verileri ve diğer küçük parçalarla nasıl iletişim kuracağı bilgileri bulunur.

Nesne tabanlı programlama sınıf ve nesne kavramlarına dayanır. Bu yaklaşımı benimseyerek yazdığımız programlar nesnelerin birbirleriyle etkileşime geçmelerinin sağlanmasıyla oluşturulur.

Nesne Tabanlı Programlamanın Avantajları

  • Hızlı ve uygulaması kolay bir yaklaşımdır.
  • Programlar için net bir yapı sağlar.
  • “Don’t Repeat Yourself” yani “Kendini Tekrar Etme” ilkesini uygular ve kodun bakımını, düzenlenmesini ve hata ayıklamasını kolaylaştırır.
  • Daha az kod ve daha kısa geliştirme süresiyle, yeniden kullanılabilir uygulamalar oluşturmayı mümkün kılar.
  • Yapıya daha sonradan yeni özellikler ekleyerek genişletilebilirlik sağlar.
  • Problemleri gerçek hayattaki işlemlere göre modeller.

Sınıflar

Sınıfları kısa bir şekilde açıklayacak olursak nesne üretmemizi sağlayan veri tipleridir diyebiliriz. Nesne tabanlı programlamada ne yapmak istersek isteyelim ilk yapmamız gereken şey sınıf tanımlamaktır çünkü nesne tabanlı programlama nesneleri temel alır ve nesneler de sınıflardan türetilir.

Nesne tabanlı programlamada iki farklı şekilde boş sınıf tanımlaması yapabiliriz:

  • Kalıtımın kullanılmadığı durumda parantez kullanmadan sınıf tanımlarız.
  • Kalıtımın kullanıldığı durumda parantez kullanarak sınıf tanımlarız.

Nesneler

Nesne tabanlı programlama adından da anlaşılacağı gibi nesneler temel alınarak gerçekleştirilen bir programlama faaliyetidir. Nesneler birtakım nitelikleri ve metodları barındıran ögeleri tanımlamak için kullanılan isimdir. Ortak özelliklere ve davranışlara sahip nesneler tanımlamamız gerektiğinde nesne tabanlı programlamadan faydalanırız. Python’da nasıl nesne tanımlandığını bir örnek vererek öğrenelim.

Yukarıda Sinif adında bir sınıf tanımlayıp bu sınıftan a_sinifi adında bir nesne ürettik. a_sinifi’nın tipine bakmak için type() fonksiyonu kullandık.

Sınıf Nitelikleri

Tanımladığımız sınıflar boş olursa hiçbir şey yapmazlar yani bize bir katkısı olmaz bu yüzden bu sınıflara nitelikler ekleyerek sınıflarımızı kullanışlı hale getiririz.

Kullanışlı hale getirdiğimiz sınıflara istersek başlangıç değerleri atayarak nesne oluşturmadan ya da nesne oluşturarak erişim sağlayabiliriz. Nesne oluşturmadan yani sınıf adı ile erişim sağladığımızda sadece bir kez erişim sağlamış oluyoruz ama bizim amacımız farklı farklı nesneler oluşturup birden çok kez erişim sağlamak olduğu için nesne üretiyoruz.

Yukarıda olduğu gibi nesneler üretildikleri sınıfların tiplerinde oluyorlar. Ayrıca ürettiğimiz nesnenin niteliklerine erişip ekrana bastırabiliyoruz.

Örnek Nitelikleri

Python’da sınıf nitelikleri dışında da nitelikler vardır. Bunlar örnek nitelikleridir. Örnek niteliklerini oluşturmak için __init__ fonksiyonu ve self anahtar kelimesinden faydalanırız. __init__ fonksiyonu bir sınıftan nesne ürettiğimizde ilk çalışan fonksiyondur. Bu fonksiyonun ilk parametresi olarak self anahtar kelimesini kullanırız. Aslında self anahtar kelimesini kullanmak zorunlu değildir ama dilde çok fazla yaygınlaştığı için biz de self kelimesini kullanmayı tercih ediyoruz. Örnek niteliklerinden çıktı alabilmemiz için sınıfımızdan mutlaka bir nesne üretmemiz yani sınıfımızı örneklememiz gereklidir.

Yukarıda bir Araba sınıfı oluşturup __init__ fonksiyonu ile örnek niteliklerini belirledik. Şimdi de bu niteliklere sahip bir nesne oluşturup niteliklerine nasıl eriştiğimize göz atalım.

Burada nesne oluştururken gerekli niteliklerden bir ya da daha fazlasını eksik verirsek TypeError hatası alırız. Bu yüzden nesne tanımlaması yaparken çok dikkatli olmalıyız.

Örnek Metodları

Örnek metodları bir sınıftan oluşturduğumuz nesneler sayesinde erişilebilen metodlardır. Bu metodlara her zaman ilk parametre olarak yine self anahtar kelimesini veririz. Haydi biraz önce oluşturduğumuz Araba sınıfına birkaç örnek metodu tanımlayarak bu metodların nasıl çalıştığına bakalım.

Yukarıda hizArttir ve durdur adında iki tane örnek metodu tanımladık. Bu metodlar oluşturulan nesnenin km parametresi üzerinde etki sahibi olacaklar. Şimdi Araba sınıfından bir nesne oluşturup bu metodları çağıralım.

Gördüğümüz üzere ilk önce __init__ fonksiyonu çalışarak verdiğimiz değerlerde bir araba nesnesi oluşturdu. Sonrasında arabanın hızı üzerinde etkili olan hizArttir ve durdur metodlarını çalıştırdık ve print metodu ile bu metodların arabanın hızını nasıl etkilediğini görüntüledik.

Bir yazımın daha sonuna geldik. Bu yazımda nesne tabanlı programlanın temellerinden bahsetmeye çalıştım umarım faydalı olmuştur. Bir sonraki yazımda nesne tabanlı programlamanın 4 temel ilkesi olan Encapsulation, Inheritance, Polymorphism ve Abstraction’dan bahsedeceğim. Bir sonraki yazımda görüşünceye de hoşça kalın!

--

--