Python ile Nesne Tabanlı Programlama-Encapsulation-Inheritance-Abstract Class-Overriding ve…
Arkadaşlar bir önceki yazımızda Python ile Nesne Tabanlı Programlama’ya giriş yapmıştık. Bir okul örneği üzerinden öğretmen ve öğrenci…
Arkadaşlar bir önceki yazımızda Python ile Nesne Tabanlı Programlama’ya giriş yapmıştık. Bir okul örneği üzerinden öğretmen ve öğrenci sınıfları oluşturup onların bazı özellik ve metotlarını belirlemiştik. Şimdi de sizlere Encapsulation-Inheritance-Abstract Class-Overriding ve Polymorphism konularını anlatmaya çalışacağım. Birincisi ile başlayalım
1.Encapsulation — Kapsülleme (Erişimi Engelleme)
Bu konu aslında başlıktan da anlaşılacağı üzere tanımladığımız bazı özellik ve metotların dışarıdan erişiminin kısıtlanması anlamına geliyor. Bazı özellik ve metotların her kişi tarafından erişilmemesi gerekir. Örneğin öğretmenlerin maaşına zam yapmak her nesnenin yapacağı bir iş değil, sadece Yönetim kademesinin ulaşması gerekir bu metoda. Diğer nesnelerin ulaşamaması gerekmekte. İşte bu şekilde ulaşılamamasını istediğimiz özellik ve metotlara erişimi engelleyebiliyoruz.
Örnekte görüldüğü gibi öğretmenlerin maaşlarına ulaşılmasını değişkene __maaş ismini vererek engelledik. Herkesin ulaşabileceği değişkenleri genel değişken, herkesin ulaşmasını istemediğimiz değişkenleri de özel değişken olarak tanımlıyoruz. Bu örnekte maaş özelliğini bulamadığı için hata verdi. Yani aslında erişimi engelledik. Buna Encapsulation ismi verilmekte. Peki bu maaşa ulaşması gerekenler nasıl ulaşacak? Hemen nasıl ulaşabileceğinizi göstereyim
Set ve Get kelimelerini kullanarak tanımlama yaptığmızda erişebiliyoruz. Özelliklere bu şekilde Encapsulation (Erişimi engelleme) işlemini uyguladık, peki metotlara erişimi nasıl engelleriz ?
Evet kapsülleme işlemini öğrendik. Şimdi Inheritance (Kalıtım) konusuna geçelim
2.Inheritance ( Kalıtım )
Kalıtım konusu Nesne Tabanlı Programlamanın en önemli konusudur. Biliyorsunuz öğretmen ve öğrenci isimli iki sınıf oluşturduk. Bu iki sınıftada aslında birbirinin aynısı olan özellikler var. Örneğin isim, soyisim ve yaş özellikleri bu iki sınıfta da var. Bir okuldaki insanları düşünün. Öğretmen , öğrenci , yönetim , hizmetli ve veliler olarak beş sınıfa ayırabiliriz. Bu beş sınıftaki insanlarında aynı ve farklı özellikleri olacak. Örneğin bütün sınıflardaki insanların hepsinde isim, soyisim ve yaş özellikleri olacak. Bazı sınıflarda farklı özellikler olacak. Örneğin öğretmen sınıfında ek olarak maaş ve uzmanlık isminde yeni özellikleri olacak.
İşte böyle durumlarda biz kalıtım konusunu kullanıyoruz ve aslında okul isminde bir ana sınıf oluşturuyoruz. Bu okul sınıfında bütün sınıflarda olan özellikleri ve metotları tanımlıyoruz.
Sonrasında öğretmen, öğrenci, yönetim, hizmetli ve veliler isimlerinde alt sınıflar oluşturuyoruz. Bu alt sınıflar ana sınıftan bazı özellik ve metotları miras alıyor. Bu sayede ortak geçen özellik ve metotları her sınıfta tekrar tekrar tanımlamamış oluyoruz.
Örnek olarak önce Okul isminde bir ana sınıf oluşturalım. İsim, soyisim ve yaş olarak üç özelliği olsun.
Okul isminde bir ana sınıf oluşturduk ve bir de öğretmen isminde alt sınıf oluşturduk. Öğretmen sınıfı okul sınıfından isim, soyisim ve yaş özelliklerini miras aldı ve biz öğretmen sınıfında bunları yeniden tanımlamadık. Burada super() isimli bir fonksiyon kullandık miras alabilmek için.
İsterseniz ana sınıfta olmayan özellik ve metotları da alt sınıfa ekleyebilirsiniz
Burada öğretmen sınıfında olmayan maaş ve uzmanlık isminde iki tane özellik daha ekledik. Bir de zam isminde bir metot ekledik. Şimdi bir de okul ana sınıfına bağlı olan öğrenci sınıfı oluşturalım
Öğrenci sınıfının da okul ana sınıfından miras aldığı özellikler var ama ondan ayrı olan not ortalaması gibi bir özelliği daha var.
Biz şimdi bir parent sınıf oluşturduk okul isminde ve 2 adette child sınıf oluşturduk öğrenci ve öğretmen şeklinde. Hepsinde bazı özellikler aynı ama bazı özellikler farklı oldu. Genel özellikleri ana sınıftan aldık. Sizde Yönetici hizmetli ve veliler isminde üç adet daha alt sınıf oluşturun
3.Abstract Class ( Soyut Sınıflar)
Bu soyut sınıflar alt sınıflar için bir şablon görevi görürler. Soyut sınıfların İki tane özelliği var. Daha iyi anlamız için hemen bir örnek yapalım.
Soyut sınıftan bir nesne üretilemez
2. Alt sınıfta bu metodları kullanacaksanız orada yeniden tanımlanmalı
4.Overriding (Üzerine Yazma-Öncekini İptal Etme)
Eğer alt sınıfta ana sınıftan metotları aynı isimde tanımlarsak alt sınıftaki üst sınıftakini iptal eder ve alt sınıftaki aktif olur. Hemen örnek yapalım
Burada okul isminde bir ana sınıf tanımladık ve öğretmen isminde alt sınıf tanımladık. Alt sınıfta üst sınıfta olmayan özellikler ekledik.
Okul sınıfında info isminde bir metot tanımladık. Aynı info metodunu öğretmen sınıfında da tanımladık. Öğretmen sınıfında tanımladığımız info metodu ana sınıftakini iptal etti ve üzerine yazmış oldu. Yani yeni info metodu çalışmış oldu.
İşte bu yaptığımıza Overriding (üzerine yazma — eskisini iptal etme) ismi verilmekte.
5.Polymorphism (Çok Şekillilik , Çok Biçimlilik)
Aslında az önce yaptık. Ama burada başka bir örnek yapalım. Mesela okul çalışanlarına %20 zam yapılacak, öğretmenlere %50 zam yapılacak ve yeni bir yönetim isminde alt sınıf oluşturacağız.Yönetim sınıfının zam oranı da %100 olsun.
Evet şu an her sınıfa ayrı bir zam oranı yapabildik. İşte buna Polymorphisim ismi veriliyor.
Bu yazımızda Python ile Nesne Tabanlı Programlama’da Encapsulation-Inheritance-Abstract Class-Overriding ve Polymorphism konularını görmüş olduk. Temel olarak konsepti anladığınızı düşünüyorum. Daha fazla örnek yaparak daha iyi oturmasını sağlayabilirsiniz.
Udemy platformunda şu an 18'den fazla İngilizce ve Türkçe kursum bulunmakta.Dünya genelinde 100.000'den fazla öğrenciye programlama, yazılım ve e-ticaret alanlarında eğitimler vermekteyim.
Udemy eğitimlerime bu linkten ulaşabilirsiniz.Görüşmek üzere …