Object Oriented Programlama # 9 - Python Dersleri (Tutorials)

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@elektroyazilim·
0.000 HBD
Object Oriented Programlama # 9 - Python Dersleri (Tutorials)
![object.jpg](https://cdn.steemitimages.com/DQmb9SAwWzX6XvD758tzXyxhUrmFP8vUQf9MkpbUpz3x6tm/object.jpg)

Merhabalar

Python programlama derslerinin bu bölümünde kalıtımın en önemli konularından olan _overriding_ konusundan bahsedeceğim.

> Bu ders önceki dersleri takip ettiğiniz varsayılarak anlatılacaktır. Takip etmediyseniz öncelikle onlara bakmanız tavsiye edilir.

Önceki derslerimizde kalıtım konusu üzerine örnekler yapmıştık. Bu derste de o dersteki örnekler üzerinden gideceğim ki anlaşılması kolay olsun.

Önceki derslerimizde hatırlarsanız okul otomasyon sistemini hayal etmiştik. Okuldaki personelleri, object oriented programlamaya uyarlamaya çalışmıştık.

Bu durumda _personel_ adında temel bir sınıf oluşturmuştuk. Sonrasında öğretmen ve işçi bilgilerini tutmak için de _ogretmen_ ve _isci_ adında iki sınıf oluşturup bu sınıfları da _personel_ sınıfından miras aldırmıştık.

_personel_ dediğimiz temel sınıf, öğretmen ve işçi sınfının ortak verilerini tutmaktadır. _ogretmen_ ve _isci_ sınıfları bu sınıftan miras aldıkları için _personel_ sınıfındaki özellik ve metotları kullanabilirler.

> Böylelikle kod tekrarının önüne geçilmiş olunmaktadır.

Şimdi mantığı anlattığımıza göre sınıfları verelim. _personel_ sınıfımız :

![](https://cdn.steemitimages.com/DQmPAxwREKQVJ35WUTJfph4wCNfhiDzFkSwEbp9KrfD9YYm/image.png)

_personel_ sınıfı içerisinde özelliklerin olduğu _init()_ fonksiyonu ve ek olarak _bilgileriGoster()_  ve _maasArtir()_  metotları bulunmaktadır.

Bu sınıftan miras alan _ogretmen_ sınıfı ise aşağıdaki gibidir :

![](https://cdn.steemitimages.com/DQmPnU5DVvtjdCpYWjJTZcTy3odCfALBbJmojUt6vsW3CFa/image.png)

_ogretmen_ sınıfının parantezleri içerisine miras aldığı personel sınıfı getirilmiştir.

_ogretmen_ sınıfı, _personel_ sınıfından miras aldığı için _personel_ sınıfının metotlarını kullanabilir. Tabi bunun için ilk olarak _ogretmen_ sınıfından bir nesne oluşturmalıyız.

![](https://cdn.steemitimages.com/DQmXyHVnEFcjNPPMMa1U5hBTrJMGmuKkbVLdzBeWuemf9Cw/image.png)

_ogretmenC_ nesnesi, _ogretmen_ tipinde bir nesnedir ve constructor sınıfı çağrılırken verdiğimiz değerlerle oluşturulmuştur.

_ogretmen_ sınıfı, miras aldığı _personel_ sınıfının özellik ve metotlarını kullanabileceği gibi kendi bünyesinde de özellik  ve metot bulundurabilir. Aynı şekilde bunları da kullanabilir.

_ogretmen_ sınıfının içerisinde bulunan _bilgileriDegistir()_ metodu, sadece _ogretmen_ sınıfına ait bir metotdur ve herhangi bir _ogretmen_ tipi nesne tarafından kullanılabilir. 

Uygulamasını görelim :

![](https://cdn.steemitimages.com/DQmQmUk7kw2Jdzx4Q3RbfW7LRzNr9dLbfpQ4uGZ7Hgvv3V8/image.png)

_bilgileriDegistir()_ metodunun içerisine yeni değerleri vererek çalıştırdık. Sonrasında _bilgileriGoster()_ metodunu çalıştırarak kontrolünü yaptık. Gayet de güzel çalıştı.

## Overriding

Peki biz miras aldığımız bir sınıfta bulunan bir metotla aynı isimde bir metot tanımlayabilir miyiz?

Örneğin _personel_ sınıfı içerisindeki _init()_ fonksiyonunu biz 3 parametreli değil de 4 parametreli yapmak istersek ne yapmamız gerekir?

İşte böylesi bir işlemde _overriding_ kavramı devreye giriyor. Öncelikle uygulamasını görelim :

![](https://cdn.steemitimages.com/DQmXdrRgWYCkupAw6F1YArTXEw7xwpVYftN6SpE35wApb3Q/image.png)

Görüldüğü gibi _ogretmen_ sınıfı içerisinde _init()_ fonksiyonunu 4 parametreli olarak baştan  hazırladık. Sonrasında _ogretmenD_ nesnesini oluştururken 4 parametre verdik. Kodumuzu çalıştırdığımızda hangi _init()_ fonksiyonu çalışacak anlamak için de daha öncesinde _init_ fonksiyonu içerisine kontrol amaçlı bir print()  fonksiyonu yerleştirmiştik.

Sonuçta ekrana
> Öğretmen sınıfının init fonksiyonu

yazısı yazıldı.  Buradan anlıyoruz ki miras alınan sınıf ve alan sınıf içerisinde aynı isimle iki metot olsa da mirası alan sınıftaki metot dikkate alınıyor. Buna _overriding_ deniliyor. Yani miras alınan sınıftaki aynı isimdeki metodu eziyor.

Şimdilik bu kadar.

Umarım faydalı bir çalışma olmuştur.

Teşekkürler.

![yesilayrca.png](https://cdn.steemitimages.com/DQmYZw2bhUomeivJwQ8CiLaTzXTbJPLd1PsSGdcoEE1DfKP/yesilayrca.png)

Kaynak belirtilmeyen görseller bana aittir. The pictures without source in the post is belong to me
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,