Python'da Nesne Yönelimli Programlama İlkeleri

Python'da Nesne Yönelimli Programlama İlkeleri

Python'da Nesne Yönelimli Programlama İlkeleri, interaktif kodlama özellikleriyle yazılım dünyasına hızlı bir giriş yapıyor Tüm temel OOP prensiplerini öğrenerek benzersiz projeler geliştirebilirsiniz Yeni bir programlama yolculuğuna çıkmak için bu rehberi mutlaka inceleyin!

Python'da Nesne Yönelimli Programlama İlkeleri

Bu makalede, Python programlama dilinde nesne yönelimli programlama prensipleri ele alınacaktır. Nesne yönelimli programlama, programlama dünyasında bir paradigma türüdür. Bu paradigma, programlama sürecinde nesnelere odaklanır ve nesnelere yönelik bir yaklaşım benimser. Bu makale, okuyuculara Python dilindeki nesne yönelimli programlama prensipleri hakkında detaylı bilgi sağlayacaktır.


Nesne Yönelimli Programlama Nedir?

Nesne yönelimli programlama (OOP), programlama dünyasında paradigma türlerinden biridir. Bu paradigmada, programlama yapılırken nesnelere yönelinir. Özünde, bir nesne, verileri ve yöntemleri bir arada tutan bir yapıdır. Bu nesneler, programlama projelerinde çeşitli özelliklerle bir arada kullanılabilirler.

Nesne yönelimli programlama, geleneksel proje yönetimine kıyasla üstün bir tasarım sağlar. Bu tasarım, kullanıcı dostu, hata ayıklama açısından daha kolay ve daha esnek bir kodlama deneyimi sunar. OOP, çok sayıda kod yerine daha az kod kullanarak hızlı ve verimli programlama yapma fırsatı sağlar.

Python gibi birçok programlama dili, OOP'yi destekler. OOP, programcılara, bir projenin karmaşasını yönetirken daha akıllıca tasarlamalarına imkân tanır. Python'da, sınıflar ve nesneler OOP'nin en temel bileşenleridir. Sınıflar, nesneleri oluşturmak için bir kalıptır.

Özetle, nesne yönelimli programlama, programlama dünyasında vazgeçilmez bir paradigmadır. OOP'nin temel prensibi nesnelere odaklanmaktır. Python gibi birçok programlama dilinde OOP kullanımı oldukça yaygındır.


Python'da OOP Nasıl Çalışır?

Python'da nesne yönelimli programlama (OOP) kullanımıyla, programlamada sınıflar ve nesneler kullanılır. Sınıflar, birden çok nesneyi oluşturmak için bir kalıp görevi görür. Her nesne, bir sınıftan türetilir ve sınıfın özelliklerini ve yöntemlerini miras alır.

Örneğin, bir hayvan sınıfı oluşturmak istediğimizi varsayalım. Bu sınıfın özellikleri, tür, yaş ve boyut olabilir. Her bir hayvan nesnesi, bu özelliklerin farklı değerlerine sahip olabilir. Nesnelerin özelliklere erişimini sağlamak için, __init__() yöntemi kullanılabilir. Bu yöntem, bir nesne oluşturulduğunda sınıfın özelliklerini tanımlar.

Sınıf Nesne
Hayvan Köpek
Kedi
At

Bu örnekte, Hayvan sınıfından türetilen Köpek, Kedi ve At nesneleri oluşturulabilir. Sınıflar ve nesneler, verilerin kolay erişimini sağlamak için kullanışlıdır ve programlamada birçok alanda kullanılabilir.


Sınıf Oluşturma

Python'da nesne yönelimli programlama yapmak isteyenlerin öncelikle sınıf oluşturma konusunda bilgi sahibi olmaları gerekiyor. Sınıflar, Python'da nesneleri oluşturmak için kullanılan bir kalıptır. Bu kalıbı kullanarak özellikleri ve yöntemleri tanımlayabilirsiniz.

Sınıf oluşturmak için class anahtar kelimesini kullanmanız gerekiyor. Sınıf adı genellikle büyük harfle yazılır ve iyi bir açıklama yapılması gerekiyor. Sınıf adını yazdıktan sonra ":” işareti koyuluyor ve sınıfın içeriği yazılabilir. Bu içeride özelliklerin ve yöntemlerin tanımlanması için gereken kodlar yazılır.

Sınıf oluşturma işlemi bittikten sonra, bu sınıftan nesne örnekleri oluşturulabilir. Bu örnekleri bir değişkene atayabilirsiniz. Örneğin, kitap1 = Kitap() şeklinde bir nesne örneği oluşturabilirsiniz. Bu örneği daha sonra kullanarak özelliklerini tanımlayabilir ve sınıfın yöntemlerini çağırabilirsiniz.

Sınıf oluşturma, nesne yönelimli programlama kavramının temel taşlarından biridir. Bu prensipleri öğrenmek, programlama dünyasında profesyonel bir yolculuk için iyi bir başlangıç olabilir.

class

Python'da nesne yönelimli programlama yaparken, sınıfları kullanmak temel prensiplerin başında gelir. Sınıflar, bir nesneyi oluşturmak için bir kalıptır. Python'da, bir sınıf tanımlamak için class anahtar kelimesi kullanılır ve sınıf adı first letter'ı büyük yazılır.

Bir sınıf oluşturduğunuzda, sınıfın özelliklerini ve davranışlarını tanımlayabilirsiniz. Sınıflar, değişkenler, fonksiyonlar ve özel yöntemler içerebilir. Sınıflar ayrıca daha karmaşık yapıları, örneğin modülleri ve paketleri içerebilir. Sınıfın özelliklerinin değeri, nesne oluşturulduğunda özelliklere belirlenebilir veya özelliklerin varsayılan değerleri de atanabilir.

Sınıfın ana amacı, yeni nesnelerin oluşturulmasını kolaylaştırmaktır. Sınıf nesnelerine özellik tanımlama ve uygulama işlemlerini gerçekleştirebilirsiniz.

Bir sınıftan bir nesne oluşturmak için, class anahtar kelimesi ile bir sınıf oluşturduktan sonra, sınıfın bir örneği üzerinde işlem yapabilirsiniz. Bir sınıfın örneğini tanımlamak için, oluşturulan sınıf adı fonksiyon olarak çağırılabilir. Örneğin:

   myclass = SinifAdi ()

Sınıfın özelliklerine ve yöntemlerine erişmek için, sınıfın örneğinden yararlanmak gerekmektedir. Bir sınıfın metodları yalnızca sınıfın örneği tarafından kullanılabilir. Bu nedenle, sınıf örneği, sınıftaki özelliklerin erişilebilir olduğu bir nesne olarak düşünülebilir.

Bir sınıfanın özelliklerine erişmek, nokta işareti kullanarak kolayca yapılabilir. Özellikler, sınıfta önceden tanımlanmış variable'lardır:

   myclass.ozellik

Bir sınıfın özellikleri, nesne oluşturulduktan sonra değiştirilebilir veya yenileri eklenebilir. Örneğin:

   myclass.ozellik2 = "yeni_ozellik_degeri"

Bir sınıfın özelliklerine erişmek için, özellik adını belirtmek yeterlidir. Ayrıca bir sınıfın özellikleri, özellik yöntemi içerisinde kullanılmak üzere diğer yöntemlere de parametre olarak sağlanabilir.

Bir sınıfın yöntemlerine erişmek de, sınıfın özelliklerine erişiminin benzer bir şekilde yapılabilir. Yöntem adını yazmak ve sonrasında nokta işareti eklemek yeterlidir. Yöntemlere argümanlar da verilebilir.

   myclass.yöntem(arguman)

Sınıf örneği oluşturduktan sonra, sınıftaki özellikler ve yöntemler üzerinde değişiklik yapma seçeneği mevcuttur.

anahtar kelimesi kullanılarak tanımlanır.

Bir sınıf oluşturmak için classanahtar kelimesi kullanılır. Sınıflar, genellikle nesneleri oluşturmak için bir kalıptır. Sınıfın adı genellikle büyük harfle başlar ve ardından parantez açılır ve kapanır. Parantez açık bırakılırsa, sınıf, objectsınıfının varsayılan özelliklerini içerir.

Sınıf tanımı, sınıfın özelliklerini belirlemek için kullanılan defanasınıfından farklıdır. Bu anahtar kelime, bir sınıfın bir yöntemini tanımlar. Sınıflar oluşturulduğunda, __init__()yöntemi ve diğer yöntemleri tanımlamak için kullanılabilecek diğer yöntemler de bulunur. Oluşturulan sınıf, bir nesne yaratabilmek için kullanılır. Bu noktada, özellikler, bir nesne oluşturulduğunda tanımlanır.

Python'da bir sınıf örneği, classanahtar kelimesi ile oluşturulabilir ve bu örneği değişkenlere atayabilirsiniz. Örneğin; sınıfımızın adı "Araba" ise araba = Araba()yapıldığında, __init__()yöntemi, Araba sınıfından bir nesne oluşturulduğunda otomatik olarak çağrılır ve istenen özelliklere sahip bir araba nesnesi oluşturulur.


Sınıf Örneği Oluşturma

class anahtar kelimesi ile oluşturulur. Oluşturduğunuz sınıftan bir örnek almak için, sınıf adını kullanarak bir değişken oluşturmanız gerekiyor. Değişkenin adı genellikle küçük harflerle ve alt çizgilerle ayrılmış bir kelime olmalıdır. Örneğin, sınıf adı "Araba" ise, örnek adı "araba" olabilir. Aşağıda örnek bir sınıfın nasıl tanımlandığı gösterilmiştir:

class Araba:    marka = ""    model = ""    renk = ""

araba1 = Araba()araba1.marka = "Mercedes"araba1.model = "E200"araba1.renk = "Siyah"

Bu örnekte "Araba" adında bir sınıf tanımlandı. Bu sınıfın üç özelliği var: marka, model ve renk. Daha sonra "araba1" adında bir örnek oluşturuldu ve "marka", "model" ve "renk" özelliklerine değerleri atandı. Bu örnek, Araba sınıfından bir nesnedir ve "araba1" adı altında saklanır.

Sınıf örneği oluştururken, ihtiyacınız olan özelliklere ve metodlara sahip bir sınıf oluşturmanız önemlidir. Bu sayede oluşturduğunuz örneği, sınıfın özelliklerine ve metodlarına uygun olarak kullanabilirsiniz.

class

Nesne yönelimli programlama (OOP) prensiplerinin temel bileşenleri olan sınıf ve nesneler, Python dilinde de kullanılır. Sınıflar, nesneleri oluşturmak için bir kalıptır ve class anahtar kelimesi ile tanımlanır. Sınıf tanımlarken, sınıf adı ve iki nokta üst üste karakterleri ile birlikte tanımlanır.

Bir sınıfın içinde, özelliklerin ve yöntemlerin tanımlandığı değişkenler yer alır. Bu değişkenler, sınıfın niteliklerini ve işlevlerini belirler. Sınıf içindeki bir yöntem, sınıfın işlevlerinden biridir. Sınıf içinde tanımlanan yöntemlere, nesne üzerinden erişilebilir.

Sınıf Özellikleri ve Yöntemleri Açıklama
__init__() Bir sınıftan bir nesne yaratıldığında otomatik olarak çağrılan bir yöntemdir. Bu yöntem, nesnenin özelliklerini tanımlar.
self Bir sınıf içindeki yöntemlere, nesne üzerinden erişebilmek için kullanılır.
def Bir blok kodu başlatan ve sınıf içinde tanımlı yöntemlerin başında yer alan bir anahtar kelimedir.

Bir sınıfın nesnesi, class anahtar kelimesinin ardından bir boşluk bırakarak tanımlanır. Bu örnekleri değişkenlere atayabilirsiniz. Sınıfın özellikleri ve yöntemleri, nesne üzerinden erişilebilir.

Özetle, Python dilinde sınıfların tanımlanması ve nesnelerin oluşturulması, nesne yönelimli programlama prensiplerine uygun olarak gerçekleşir. Bir sınıf, nesnelerin oluşturulması için bir kalıp görevi görür ve içinde özellikler ve yöntemler tanımlanır.

anahtar kelimesi ile oluşturulur. Bu örnekleri değişkenlere atayabilirsiniz.

Python'da bir sınıfın örneği, class anahtar kelimesi ile oluşturulur. Bu örnekleri, değişkenlere atayabilirsiniz. Bu sayede aynı sınıftan farklı nesneler yaratabilir ve hepsine ayrı ayrı erişebilirsiniz. Örneğin, aşağıdaki kodda, Person sınıfından iki farklı örnek, p1 ve p2, oluşturuluyor. Bu örnekler, onlara farklı değerler atamak için kullanılabilecek değişkenlere atanmıştır:

class Person:  def __init__(self, name, age):    self.name = name    self.age = age

p1 = Person("Ali", 20)p2 = Person("Ayşe", 25)

Bu örnekte, Person sınıfı, bir kişinin adı ve yaşı gibi özellikleri temsil eder. __init__() constructor yöntemi, bir Person örneği yaratıldığında otomatik olarak çağrılır ve adı ve yaşı gibi özellikleri ayarlamak için kullanılır. Her örnek farklı bir ad ve yaşa sahip olabilir ve bu nedenle bunlar p1 ve p2 değişkenlerine atanmıştır. Bu örnekleri ayrı ayrı kullanabilirsiniz:
print(p1.name)print(p1.age)print(p2.name)print(p2.age)
Bu kod, her bir örnek tarafından temsil edilen kişinin adını ve yaşını ekrana yazdırır.


__init__() Fonksiyonu

__init__(), bir sınıftan bir nesne yaratıldığında otomatik olarak çağrılan bir yöntemdir. Bu yöntem, nesnenin özelliklerini tanımlar.

Bu yöntem, bir sınıfın özelliklerini belirlemek için kullanılır. Yöntem, self isimli parametreyi alır ve bu parametre, yöntemi çağıran nesneyi ifade eder. Ayrıca, yöntem içinde tanımlanmış olan diğer parametreler, sınıfın özelliklerini belirler.

Örneğin, aşağıdaki kod bloğunda, Person adında bir sınıf oluşturuluyor. Bu sınıfın __init__() yöntemi, isim ve yaş parametrelerini alıyor ve bunları sınıf özellikleri olarak tanımlıyor.

Kod:
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

Bir nesne oluşturmak için sınıfın adı, parantez içinde söz konusu özelliklerle birlikte çağrılır. Aşağıdaki kod bloğu, Ali adında bir nesne oluşturuyor ve sınıfın özelliklerine değerler atıyor:

Kod:
ali = Person("Ali", 25)

Burada __init__() yöntemi, ali nesnesi oluşturulduğunda otomatik olarak çağrılır ve isim ve yaş gibi özellikler nesne içinde tanımlanır.


Miras Alma

bir sınıfın belirli işlevlerini başka bir sınıftan alarak kodun tekrar kullanılabilirliğini arttıran güçlü bir özelliktir. Böylece, benzer işlevlere sahip sınıfları tekrar tekrar oluşturmak yerine, var olan sınıftan miras alarak daha özelleştirilmiş bir sınıf oluşturmak mümkündür. Bu, kodun daha az tekrar kullanılabilirliği ve daha az yazılmış kod anlamına gelir.

Python'da, miras alma işlemi super() fonksiyonu kullanılarak gerçekleştirilir. Miras alma, Python kodunda alt sınıfların üst sınıflar tarafından kalıtım olarak verilen özellikleri, değişkenleri ve yöntemleri kullanmasını sağlar. Yani, alt sınıf, üst sınıfta tanımlanan özelliklere ve yöntemlere doğrudan erişebilir.

Bu, kod yazma işlemini daha az tekrar edilebilir hale getirir. Örneğin, aynı özellik veya yöntemler birkaç sınıfta kullanılacaksa, bu kod tekrarını en aza indirmek için bir ana sınıfta tanımlanabilir ve alt sınıflar bu özellikleri ve yöntemleri kalıtım olarak alabilir.

Miras alma, kodun daha hızlı ve tutarlı hale gelmesine yardımcı olur çünkü sınıflar arasındaki ilişkileri ve işlevleri düzenli hale getirir. Böylece, değişiklikler yapmak daha kolay hale gelir. Kodlama işlemi daha hızlı ve daha doğru hale gelir çünkü sınıflar, özellikler ve yöntemler daha anlaşılır hale gelir.

Bu nedenle, miras alma, Python'da nesne yönelimli programlama prensiplerinden en önemli olanlarından biridir. Bu prensip sayesinde kodlama işlemi daha verimli ve daha az tekrar edilebilir hale getirilebilir.

super()Python'da, sınıflar arasında miras alma özelliği, bir sınıfın diğer bir sınıftan özelliklerini devralmasını sağlar. Ancak bazen, bir alt sınıfın üst sınıfın bir metodunu veya özelliğini değiştirmesi gerekebilir. Bu durumda, super() fonksiyonu devreye girer.super() fonksiyonu, bir alt sınıfın bir metodunu çağırdığında, üst sınıfın aynı adlı metodunu çağırmak için kullanılır. Böylece, üst sınıfın metodunun işlevi devam ederken, alt sınıfın ek işlevleri de birlikte gerçekleştirilir. Örneğin, 'Superclass' adında bir üst sınıf ve 'Subclass' adında bir alt sınıf varsa, alt sınıfın bir metodunun üst sınıftan devralınan bir metodu çağırması gerektiğinde, super() fonksiyonu kullanılabilir.

class Superclass:

 def my_method(self):

  print("Üst sınıf metodunun işlevi")

class Subclass(Superclass):

 def my_method(self):

  super().my_method()

  print("Alt sınıfın ek işlevi")

Yukarıdaki örnekte, 'Subclass' adlı alt sınıfın, 'my_method()' adlı metodunda, super() fonksiyonu kullanılarak, 'Superclass' adlı üst sınıfın 'my_method()' adlı metodunun çağrıldığı görülmektedir. Böylece, super() fonksiyonu, alt sınıfların, üst sınıflarda bulunan aynı adlı metotları çağırmalarını ve böylece alt sınıfların ek işlevlerini gerçekleştirebilmelerini sağlar.fonksiyonu kullanılarak gerçekleştirilir.

Python'da bir sınıfın başka bir sınıftan özelliklerini ve yöntemlerini devralması miras alma olarak adlandırılır. Miras alma işlemi, super()fonksiyonu kullanılarak gerçekleştirilir. Bu fonksiyon, bir alt sınıfın, üst sınıfın tanımlı olan yöntemlerini çağırmasına olanak tanır. Ayrıca, miras alma işlemi sayesinde alt sınıflarda yeni yöntemler tanımlanabilir veya miras alınan yöntemlerin uyarlanması yapılabilir.

super()fonksiyonu, alt sınıflarda üst sınıfın yöntemlerinin değiştirilebileceği anlamına gelir. Böylelikle kod tekrarı önlenir ve programlama süreci daha hızlı ve verimli hale getirilir.


Polimorfizm

Polimorfizm, birbirinden farklı nesne türlerinin aynı yöntemi kullanabilme yeteneği anlamına gelir. Bu durum, programlama dilinde polimorfizm kavramı olarak adlandırılır. Örneğin, bir hayvan sınıfı olsun ve bu sınıftaki farklı hayvan türleri, sınıf içindeki aynı 'beslen' yöntemini kullanabilirler. Bu durumda, her hayvan türü için ayrı bir beslenme yöntemi tanımlamak yerine, tek bir yöntem kullanılabilir.

Polimorfizm, programlamada kod tekrarlarını azaltmanın yanı sıra, kodun daha esnek ve genişletilebilir olmasını sağlar. Ayrıca, bir sınıfın çeşitli yöntemlerinin farklı şekillerde uygulanmasını sağlayarak, sınıfların daha esnek hale gelmesini sağlar. Bu sayede, yeni özellikler eklemek daha kolay hale gelir.

Python'da polimorfizm, sınıflar arasında miras alma kullanılarak gerçekleştirilir. Bir sınıf, başka bir sınıfın yöntemlerini kullanarak kendi özelliklerine ekleyebilir. Ayrıca, çoğu veri türü Python'da nesne olarak ele alındığından, Python doğal olarak polimorfizmi destekler.


Başka Bir Sınıfın Yöntemini Kullanmak

Python'da, bir sınıftan diğerine miras alma kullanarak bir sınıfın yöntemlerini kullanmak oldukça basittir. Miras alma, bir sınıfın özelliklerini ve yöntemlerini başka bir sınıfa aktarmak anlamına gelir. Bu, kodunuzun tekrarını azaltır ve daha az kod yazarak daha fazlasını başarmanıza olanak sağlar.

Miras almak için, class anahtar kelimesini kullanarak yeni bir sınıf oluşturmanız ve ardından parantez içinde miras alınan sınıfın adını belirtmeniz gerekmektedir. Örneğin:

class AnaSinif:    def __init__(self, arg1, arg2):        self.arg1 = arg1        self.arg2 = arg2    def metod(self):        print("AnaSınıf, metod")class AltSinif(AnaSinif):    def __init__(self, arg1, arg2, arg3):        AnaSinif.__init__(self, arg1, arg2)        self.arg3 = arg3    def metod(self):        print("AltSınıf, metod")obje = AltSinif("arg1", "arg2", "arg3")obje.metod()

Bu örnekte, AnaSinif sınıfından AltSinif adında yeni bir sınıf oluşturduk ve __init__() yöntemi ve metod() yöntemini ezdik. AltSinif sınıfında ayrıca, arg3 adında yeni bir özellik ekledik.

Bu sayede, AltSinif göreceli olarak daha özel bir sınıf olurken, AnaSinif'ın özelliklerinden ve yöntemlerinden yararlanıyoruz.


Çok Biçimlilik

Python dilinde, bir sınıfın farklı şekillerde uygulanabilen çeşitli yöntemlere sahip olabilmesine olanak tanıyan çok biçimlilik, programlama dilinin esnekliğini ve yaratıcılığını artırır.

Çok biçimlilik, Python programlama dilinde kullanıcılara farklı durumlar için farklı dizi işlevselliği sunar. Böylece, bir sınıfın aynı adlı farklı yöntemleri farklı şekillerde kullanılabilir ve programlama dili daha da etkili hale getirilir.

Python dilinde çok biçimlilik, sınıfların kullanacağı metotların neye benzediğini saptamamıza olanak tanır. Kullanıcılara sunulan esnek seçenekler sayesinde programların gelişimi daha basit ve anlaşılır hale gelir. Ayrıca, hata ayıklama ve bakım süreci daha kolay hale gelir.

Çok biçimlilik, Python dilinin en önemli özellikleri arasındadır. Python dilinde bir sınıfın farklı şekillerde uygulanabilen farklı yöntemleri olması, kullanıcıların programlama işlemi sırasında gereksinim duydukları işlevselliği sağlamalarını kolaylaştırır ve aynı zamanda programcıya büyük bir esneklik sağlar.


Kapsülleme

Kapsülleme, nesne yönelimli programlamanın önemli bir prensibidir. Bu prensibe göre, nesnelerin üyelerine erişimi denetleyen birtakım mekanizmalar kullanılmalıdır. Bu mekanizmalar sayesinde, nesnelerin üyelerine sadece belirli koşullar sağlanmış olduğunda erişilebilir.

Bir örnekle açıklamak gerekirse, bir otomobil nesnesi düşünelim. Bu nesnenin üyeleri arasında motor, tekerlek, direksiyon ve farlar bulunabilir. Kapsülleme prensibi sayesinde, bu üyelere sadece belirli yöntemlerle erişilebilir. Örneğin, motorun hızını ayarlamak için bir fonksiyon kullanabilirsiniz. Ancak, direksiyonun açısını ayarlamak için doğrudan bir değişkene erişemezsiniz.

Bu durum, güvenli ve sağlıklı programlama için önemlidir. Erişim kontrolü sayesinde, nesnenin üyelerine yanlışlıkla erişim engellenir ve hata riskleri azalır. Bunun yanı sıra, nesnenin kullanımı daha anlaşılır hale gelir.

Kapsülleme prensibi, Python dilinde de oldukça önemlidir. Özellikle, özellikler ve yöntemler kullanarak erişim kontrolü yapabilirsiniz. Özellikler, bir sınıfta veya nesnede tanımlanan özellikleri ifade eder. Bu özelliklere sadece belirli koşullar sağlandığında erişilebilir. Yöntemler ise, bir sınıfta veya nesnede tanımlanan işlevleri ifade eder. Bu yöntemler de yine sadece belirli koşullar sağlandığında çağrılabilir.


Özellikler Kullanma

Özellikler, bir sınıfta veya nesnede tanımlanan özellikleri ifade eder. Özellikler, bir nesne oluşturulduğunda otomatik olarak veya sonradan el ile atanan değerlerle oluşturulabilir. Özellikler, bir nesnenin özelliklerine erişmek için kullanılır. Bu sayede nesnenin özellikleri, başka sınıflardan erişime kapatılabilir.

Özellikler, bir sınıfın __init__() yöntemi içinde tanımlanabilir. Bu yöntem, nesnelerin özelliklerini tanımlar ve sınıftan her nesne oluşturulduğunda çağrılır. Ayrıca, özelliklere değişken şeklinde de atama yapılabilir.

Örneğin:

Kod Açıklama
class Araba:
  marka = 'Ford'
  model = 'Mustang'
  yil = 2021

  def __init__(self, renk):
    self.renk = renk
Burada, Araba adında bir sınıf tanımlanıyor. Sınıfın marka, model ve yil özellikleri tanımlanıyor. __init__() yöntemi içinde, renk özelliği de tanımlanıyor.

Bir nesne oluştururken:

Kod Açıklama
araba1 = Araba('kırmızı')
print(araba1.renk)
print(araba1.marka)
Burada, araba1 adında bir nesne oluşturuluyor ve renk özelliği kırmızı olarak atanıyor. Bu nesnenin renk özelliği, print() yöntemi içinde yazdırılıyor.

Çıktı:

Kod Açıklama
kırmızı
Ford
Burada, araba1 nesnesine ait renk özelliği ve marka özelliği yazdırılıyor.

Özellikleri kullanarak nesnelerin özelliklerine erişmek oldukça kolaydır ve kodun daha anlaşılır olmasını sağlar.


Yöntemler Kullanma

Yöntemler, bir sınıfın veya nesnenin işlevlerini tanımlamak için kullanılır. Bu işlevler, sınıfın nesneleri tarafından çağrılabilir. Yöntemler, sınıfta veya nesnede tanımlanabilir ve önceden tanımlanmış veya dinamik olarak tanımlanabilir.

Bir yöntem, sınıfın veya nesnenin durumunu değiştirebilir veya etkileyebilir. Ayrıca başka yöntemleri çağırabilir veya başka sınıflardan gelen yöntemlere erişebilir. Yöntemler, sınıfın nesnelerinin yapısını ve davranışını kontrol etmek için kullanılır.

Örneğin, bir öğrenci sınıfında, ders notlarını hesaplamak gibi bir fonksiyon tanımlayabilirsiniz. Bu fonksiyon, bir öğrencinin ders notlarını hesaplamak için kullanılabilir ve sınıfın tüm öğrencileri bu fonksiyondan yararlanabilir.

Yöntemler, bir nesnenin kendisini yönetmesi için de kullanılır. Bu özellik, bir nesnenin kendi özelliklerini değiştirmesine izin verir. Örneğin, bir araba nesnesi, hızını arttırmak veya azaltmak için bir hızlanma veya yavaşlatma yöntemi içerebilir.

Yöntemler, olayları işlemek veya kontroller oluşturmak için de kullanılabilir. Bu, bir sınıfın veya nesnenin bir harekete göre tepki vermesini sağlar. Örneğin, bir buton nesnesi, tıklama işleminin gerçekleşmesini kontrol etmek için click() yöntemi içerebilir.


Soyutlama

Soyutlama, nesne yönelimli programlama prensipleri arasında önemli bir yer tutar. Bu prensip, bir sınıfın karmaşıklığını ortadan kaldırmayı hedefler. Soyut sınıflar, diğer sınıflar için bir kalıp görevi görür ve bunlar soyut yöntemlerle birlikte kullanılır.

Soyutlama, programlama yaparken önce sorun oluşturan nesnelerin üst düzey bir görünümünü oluşturarak, karmaşıklığı minimum seviyeye indirmeyi amaçlar. Bu nedenle, soyutlama, bir sınıfı herhangi bir özel uygulamaya bağlamadan tanımlayan soyut sınıflar üzerine kuruludur. Soyut sınıflar, nesnelere ait özellikleri ve davranışları belirleyen, somut olarak gerçekleştirmeyen sınıflardır.

Bir sınıfın soyut bir sınıftan türetilmesi, karmaşıklığı azaltır ve daha esnek bir programlama stratejisi oluşturur. Soyutlama, nesne yönelimli programlamanın diğer prensipleriyle de birlikte kullanılabilir ve uygulamaları daha verimli hale getirebilir.


Soyut Sınıflar ve Yöntemler

Soyut sınıflar, diğer sınıflar için bir kalıp görevi görür. Bu sınıflar, bir uygulamanın nasıl kullanılabileceği hakkında bilgi verir, ancak uygulama tarafından kullanılmaz. Örnek olarak, bir şekil sınıfını ele alalım. Bu sınıf, dikdörtgen gibi gerçek şekillerin genel özelliklerini içerir. Ancak, şekil sınıfından doğrudan bir nesne oluşturamazsınız, bu yüzden bunu bir soyut sınıfta yaparsınız.

Soyut sınıflar soyut yöntemlerle birlikte kullanılır. Soyut yöntemler, bir sınıfın alt sınıfları tarafından uygulanması gereken yöntemlerdir. Bu yöntemler, soyut sınıfta tanımlanır ancak uygulama tarafından belirlenmez. Alt sınıflar, soyut yöntemleri uygulandığında, yöntemlerin işlevleri için kendi uygulanmalarını sağlarlar. Yani, soyut sınıflar, herhangi bir somut (uygulama tarafından kullanılan) nesne oluşturmadan önce, bir kalıp olarak kullanılabilir.

Soyut sınıflar, bir projenin geliştirilmesinde büyük bir rol oynar. Bu sınıflar, kod yazımını daha etkili hale getirir ve programlamacılara bir uygulama tasarlama yaklaşımı sunar. Genellikle, soyut sınıflar, makine tarafından otomatik olarak oluşturulan kodu önleyebilir. Soyut sınıfların kullanılması, kodun daha kolay bakımını da sağlar.


Arayüzler

Arayüzler, bir uygulamanın bileşenlerini bir arada tutmak ve uyumlu hale getirmek için kullanılır. Bu kavram, sınıfların özelliklerini ve yöntemlerini birbirine bağlar ve bu şekilde kodlamanın tekrarlanması önlenir. Arayüzler, farklı sınıflar tarafından kullanılabilen ortak özellikleri sağlar.

Bir arayüz, bir sınıfın özelliklerini ve yöntemlerini tanımlayan bir şablon olarak düşünülebilir. Bunlar, bir arayüzü uygulayan sınıflar tarafından kullanılacak olan özellikleri ve yöntemleri tanımlar. Arayüzler, bir uyarlanabilirlik katmanı olarak kullanılabilir ve uygulamanın daha esnek bir şekilde işlemesine olanak tanır.

Python'da arayüzler, metinlerle girilir ve herhangi bir özel söz dizimi kullanılmaz. Bunun yerine, bir sınıfta tanımlanabilir ve bu sınıfın ismi arayüz olarak kullanılır. Arayüzlerin özellikleri ve yöntemleri, bir sınıftaki özelliklerle ve yöntemlerle aynı şekilde tanımlanır, ancak hiçbir işlem tanımı yapılmaz.

Arayüzler, uygulamanızın diğer bileşenleriyle uyumlu hale getirilmesine yardımcı olur. Bir arayüzde tanımlanan özelliklerin aynı zamanda başka bir arayüz ile de uyumlu olması gerekebilir. Bu, arayüzlerin birleştirilmesi veya arayüzlerden türetme yapılması ile yapılabilir.

Arayüzler, program kodlamasında kullanılan farklı türdeki sınıfları birbirine bağlar. Arayüzler prensibi, program yazarken açık bir API sağlar ve bu API, diğer yapılara uyum sağlar. Bu şekilde, kodlama süreci bir programlama ortamı oluşturur ve programlama dili özelleştirmelerinden bağımsız bir şekilde geliştirilebilir. Arayüzler, farklı programlama dillerinde süreklilik sağlar ve kod hazırlamayı çok daha kolaylaştırır.