Geliştiriciler arasında, nesne yönelimli programlama oldukça büyük bir takipçi kitlesine sahiptir. Popüler bilgisayar dili Python da benzer şekilde nesne yönelimli paradigmaya bağlıdır.
OOP ilkelerinin temelini oluşturan Python'da nesneleri ve sınıfları tanımlamakla ilgilenir. "Python'da nesne yönelimli programlama" hakkındaki bu öğreticide, Python sınıflarını nasıl bildireceğinizi, onlardan nesneler oluşturmayı ve dört OOP tekniğini kullanmayı öğreneceksiniz.
Yani, önce ilk şey.
Nesne Tabanlı Programlama Nedir?
Nesne yönelimli programlamanın (OOP) ana odak noktası “nesnelerin” yaratılmasıdır. Birbirine bağlı değişkenler ve işlevler topluluğu bir nesneyi oluşturur.
Bu değişkenlere sıklıkla nesnenin nitelikleri denir ve davranışlarına sıklıkla işlevleri denir. Bu öğeler uygulamaya daha etkili ve anlaşılır bir yapı kazandırmaktadır. Bir otomobil, bir öğenin bir örneğidir.
Otomobil bir eşya olsaydı, niteliklerinde rengi, modeli, fiyatı, markası vb. gibi şeyler olurdu. Ayrıca hızlanır, yavaşlar ve vites değiştirirdi.
Başka bir örnek: Bir köpeği bir eşya olarak düşünürsek, o zaman bazı özellikleri renk, cins, isim, ağırlık vb. olabilir. Ve o hareket ediyor, havlıyor, oynuyor vb.
Nesneler, gizleme, kalıtım vb. gibi gerçek dünya kavramlarını programlamaya dahil ettiğinden, nesne yönelimli programlama iyi bilinmektedir. Gerçek dünya koşullarına çok benzediği için görselleştirme daha basit hale getirilmiştir.
Nesne Yönelimli Programlama Kavramları
Python'da Sınıflar ve Nesneler
Diğer tüm nesne yönelimli diller gibi Python da nesneler oluşturmak için sınıflar tasarlamanıza olanak tanır. Dizeler, listeler, sözlükler ve diğer nesneler dahil olmak üzere Python'daki en popüler veri türleri yerleşik sınıflardır.
Sınıf, belirli bir nesne türünü tanımlayan bağlantılı yöntemler ve örnek değişkenler grubudur. Bir sınıf, bir nesne için model veya şablon olarak görülebilir. Bir sınıfı oluşturan değişkenler nitelikler olarak bilinir.
Bir nesne, tanımlanmış bir dizi özniteliğe sahip bir sınıfın üyesidir. Bu nedenle, aynı sınıf kullanılarak herhangi bir sayıda nesne oluşturulabilir.
Python sınıfları, daha sonra sınıf adı ve iki nokta üst üste gelen, sınıf kelimesi kullanılarak tanımlanır. Bir papağan sınıfının bir örneği şöyle olabilir:
Burada, class anahtar sözcüğünü kullanarak boş sınıf Parrot'u ilan ediyoruz. Sınıflardan örnekler oluşturuyoruz. Örnek, belirli bir sınıftan yapılmış belirli bir nesnedir. 'pass', şu an için uygulamasından vazgeçebileceğimiz kodun yerine geçmek için sıklıkla kullanılır. Python kodunu “pass” anahtar sözcüğünü kullanarak herhangi bir hata oluşturmadan çalıştırabiliriz.
Bir sınıfın somutlaştırılması, bir nesne (örnek) ile sonuçlanır. Bir sınıf oluşturulduğunda yalnızca nesnenin açıklaması tanımlanır. Sonuç olarak, depolama veya RAM tahsis edilmez.
Bir papağan sınıfı nesnesinin bir örneği:
Obj, bu örnekte Parrot sınıfı bir nesnedir.
Diyelim ki papağanlarla ilgili ayrıntıları biliyoruz. Şimdi papağan sınıfının ve nesnelerinin nasıl oluşturulacağını göstereceğiz.
Özel Yöntem ( __init__ )
init adlı bir yöntem, her Parrot nesnesinin sahip olması gereken öznitelikleri tanımlar (). Yeni bir Parrot nesnesi oluşturulduğunda, __init__ işlevi, nesnenin özellikleri içinde sağladığımız değerleri atayarak nesnenin başlangıç durumunu oluşturur.
Böylece, sınıfın her yeni örneği __init__() kullanılarak başlatılır. __init__() herhangi bir sayıda parametreyi kabul edebilse de, self her zaman ilk parametredir.
Aktif sınıf örneğine bir referans, kendi kendine argümana dahil edilir. Bir sınıfın mevcut nesnesinin adresine bağlanan ve onun (nesnenin) değişkenlerinin verilerine erişmemizi sağlayan self parametresi bunu ifade eder.
Örnek 1
Yukarıdaki kodda Parrot adında bir sınıf oluşturduk. Ardından, özellikler tanımlanır. Bir şeyin özellikleri onun özellikleridir. Sınıfın __init__ işlevi, bu özelliklerin belirtildiği yerdir.
Bir nesne oluşturulduğunda, başlatıcı yöntemi başlangıçta çağrılan yöntemdir. Ardından, Parrot sınıfının örnekleri oluşturulur. Bu örnekte Blaze ve Wonda, yeni nesnelerimize referanslardır (değerlerdir). __class .species, class niteliğine erişmemizi sağlar.
Bir sınıfın her örneği aynı özelliklere sahiptir. Örnek özelliklerine blaze.name ve blaze.age kullanılarak da erişilebilir. Yine de bir sınıfın tüm örneklerinin benzersiz örnek nitelikleri vardır.
Örnek 2
Yöntemler
Bir sınıfın gövdesi içinde tanımlanan işlevlere yöntem denir. Bir öğenin nasıl davranacağını belirtmek için kullanılırlar.
Yukarıda bahsedilen uygulamada () iki yöntem, sing() ve dans tanımlanmıştır. Alev gibi bir örnek nesne üzerinde çağrıldıkları için bunlara örnek yöntemler denir.
OOPS konseptinin temelleri
Nesne yönelimli programlamanın dört temel fikri şunlardır:
- miras
- Encapsulation
- Polimorfizm
- Soyutlama
miras
İnsanlar sıklıkla yeni doğanlara, ebeveynlerininkine benzeyen yüz özelliklerine sahip olduklarını veya belirli özellikleri ebeveynlerinden miras aldıklarını söyler.
Ebeveynlerinizle birkaç özelliği paylaştığınızı da gözlemlemiş olabilirsiniz. Gerçek dünyadaki durum da mirasa oldukça benzer.
Ancak bu durumda “ebeveyn sınıfları”nın özellikleri “alt sınıflara” aktarılır. Bu yönler, bu bağlamda “özellikler” ve “yöntemler” olarak anılır.
Bir sınıf, kalıtım olarak bilinen tekniği kullanarak yöntemlerini ve niteliklerini başka bir sınıftan türetebilir. Kalıtım, bir üst sınıfın özelliklerini alan bir alt sınıfın sürecidir.
Örnek E-posta:
Human üst sınıfı, yukarıdaki örnekte Boy alt sınıfı tarafından miras alınır. Boy, Human'dan miras aldığı için, Boy sınıfının bir örneğini oluşturduğumuzda, tüm yöntemlerine ve özelliklerine erişebiliriz.
Boy sınıfında da schoolName adında bir yöntem tanımlanmıştır. Üst sınıf nesnesi, schoolName yöntemine erişemiyor. Ancak, schoolName yöntemi, bir alt sınıf nesnesi (Boy) oluşturularak çağrılabilir.
Encapsulation
Programdaki her değişkene genel erişim vermek, sınıflarla çalışırken ve hassas verileri işlerken akıllıca bir hareket değildir.
Programa bu değişkenlerden herhangi birine tam erişim vermeden, kapsülleme gerekli değişkenleri elde etmemiz için bir mekanizma sağlar.
Amaç için açıkça tanımlanmış yöntemler, değişkenlerden verileri güncellemek, düzenlemek veya silmek için kullanılabilir. Bu programlama yöntemi, veri girişi üzerinde gelişmiş güvenlik ve kontrol avantajlarına sahiptir.
Aşağıdaki gösterimde değişkenlere ne kadar hızlı erişilebileceğini görün:
Polimorfizm
Diyelim ki telefonunuzu internette gezinmek için kullanıyorsunuz. Instagram özet akışı. Biraz müzik dinleme isteği duyduğunuzda, Spotify'a eriştiniz ve en sevdiğiniz şarkıyı çalmaya başladınız.
Bir süre sonra bir çağrı aldınız, bu yüzden cevaplamak için arka planda ne yapıyorsanız onu duraklattınız. Arkadaşınız aradı ve onlara belirli bir kişinin telefon numarasını yazmanızı istedi.
Böylece ona telefon numarasını SMS ile gönderdin ve görevlerine devam ettin. Bir şey aldın mı? Tek bir cihazla (cep telefonunuz) beslemeler arasında gezinebilir, müzik dinleyebilir, telefon görüşmeleri yapabilir ve mesaj gönderebilirsiniz.
Bu nedenle, polimorfizm bununla karşılaştırılabilir. Poly, çok sayıda anlamına gelir ve morph, farklı formları belirtir. Bu nedenle, bir bütün olarak polimorfizm, çeşitli formlara sahip bir şeyi ifade eder.
Veya duruma bağlı olarak çeşitli davranışlar sergileyebilen “bir şey”. OOPS'de polimorfizm, aynı adlara sahip ancak farklı davranışlara sahip işlevleri tanımlar. Alternatif olarak, aynı işlev adına sahip farklı bir işlev imzası (işleve geçirilen parametreler).
Örnek E-posta:
Burada, ilgili örnek yöntemlerini kullanarak Zebra ve Tavşan nesneleri arasında yineleme yapmak için hayvan değişkenini kullanabiliriz. Sonuç olarak, hem Zebra'nın hem de Tavşan'ın davranışı (color() & eats()) burada hayvan adı verilen tek bir değişkenle temsil edilir. Bu nedenle polimorfizm kurallarına uyar.
Soyutlama
Bu içeriği okumak için büyük olasılıkla bir dizüstü bilgisayar, telefon veya tablet kullanıyorsunuz. Bunu okurken, muhtemelen notlar alıyor, önemli bölümlerin altını çiziyor ve belki de bazı bilgileri kişisel dosyalarınızda saklıyorsunuz.
Bunu okuduğunuzda görebileceğiniz tek şey, size görüntülenen verileri içeren bir “ekran”dır. Yazarken sadece klavyenin tuşlarını görürsünüz, böylece bir tuşa basmanın o kelimenin ekranda görünmesine neden olabileceği gibi dahili incelikler hakkında endişelenmenize gerek kalmaz.
Alternatif olarak, ekranınızdaki bir düğmeye basmak nasıl yeni bir sekme başlatabilir.
Bu nedenle, bu durumda gözlemleyebildiğimiz her şey soyuttur. Sadece yarattığı sonucu görebiliriz, (ki bizim için gerçekten önemli olan) iç karışıklıkları değil.
Buna benzer şekilde, soyutlama, herhangi bir uygulamayı veya dahili detayları gizlerken, yalnızca her şeyin sahip olduğu işlevleri ortaya çıkarır.
Soyutlamanın ana amacı, insanların yalnızca görmeleri gerekeni görmeleri için arka plan bilgilerini ve herhangi bir yabancı veri uygulamasını gizlemektir. Kodun karmaşıklığını yönetmeye yardımcı olur.
Örnek E-posta:
Araçla ilgili bir soyut sınıf burada mevcuttur. ABC soyut sınıfından miras aldığı için soyuttur. Soyut yöntemler tanımlanmadığından veya boş kaldığından, Vehicle sınıfının no of wheel adı verilen ve tanımı olmayan soyut bir yöntemi vardır.
Yöntemin uygulamasını sağlamak için soyut sınıfları miras alan sınıfları öngörürler.
OOPS kavramlarının faydaları
- Kapsülleme ile yüksek güvenlik ve veri gizliliği sağlanır.
- Aynı sınıfın birçok polimorfik versiyonuna sahip olma esnekliği.
- Yüksek düzeyde kod karmaşıklığı, soyutlama ile azaltılmıştır.
- Tek bir sorunu bulmak için yüzlerce kod satırını elemek yerine, programlamanın modülerliği hata ayıklamayı basitleştirir.
- Kodun yeniden kullanımına, bir alt sınıfın üst sınıf özelliklerini devralması neden olur.
- Her mini problem için gerekli işlemleri yapan sınıflar oluşturduğumuz için etkili problem çözme mümkündür. Bu sınıfları yeniden kullanabildiğimiz için aşağıdaki problem daha da hızlı çözülebilir.
Sonuç
Sonuç olarak, şu anda en popüler programlama paradigması olan Python'da OOPS fikirlerini öğrendik.
Bunu okuduktan sonra, OOPS paradigmasının tamamen sınıflar ve nesneler fikriyle ilgilendiğini fark etmiş olmalısınız. ve kapsülleme, polimorfizm, kalıtım ve soyutlama gibi OOPS kavramları.
Yorum bırak