İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Nesne Tabanlı Programlama - Python (OOP)

Emperor Federico - ait Kullanıcı Resmi (Avatar)
Deneyimli Yazılımcı
Üyelik tarihi:
01/2013
Nereden:
Route 66
Mesajlar:
875
Konular:
145
Teşekkür (Etti):
35
Teşekkür (Aldı):
296
Ticaret:
(0) %
21-07-2018 23:46
#1
Post
Nesne Tabanlı Programlama - Python (OOP)
Yazılım dünyasına ilk girdiğinizde, diller hakkında bilgiler öğrenirken hep görürsünüz, "Nesne Tabanlı Programlama". Bu terimi akademik hayatta hocalarınıza sorduğunuzda suratlarındaki ekşimsi ifadeyi görebilirsiniz. Bu sorudan bıkmışlardır.

Peki nedir bu "Nesne Tabanlı Programlama"(Object Oriented Programming)?
Adından da anlaşılacağı üzere bir nesne oluşturup(bu nesne bir veri tipi olacak),buna belirli tanımalamalar yapacağız.

Öncelikle bizim bir ana sınıfımız (class) olacak. Oluşturacağımız nesnemizi bu sınıfa tanımlayacağız.
Kod:
class Bilgisayar():
      marka = "Lenovo"
      islemci = "intelcorei5"
      ram = 8192 #Mega cinsinden.
      hafiza = 500 #Giga cinsinden.
Sınıfımızı oluşturduk. Bu sınıfımıza ait bir nesne oluşturalım. Peki bu nasıl olacak?
Kod:
nesne_adı=sınıf_adı(parametreler(opsiyonelparametreler))
Nesnemizi oluşturalım.
Kod:
bilgisayar1 = Bilgisayar()
Bu kodumuzda "bilgisayar1" adlı nesnemizi "Bilgisayar" türünden oluşturduk.
Bunu kod editörümüzde çalıştırdığımız zaman;
Kod:
bilgisayar1 #şeklinde çalıştırırsak
Kod editörümüz bize ait olduğu sınıfı (veri tipini) gösterecektir.
Kod:
type(bilgisayar1)
Bu kodumuz ile birlikte oluşturduğumuz "Bilgisayar" sınıfındaki tüm özellikleri "bilgisayar1" adlı nesnemize sahiplendirmiş (attributes) olduk.

Şimdi bilgisayar1 nesnemizin özelliklerini görelim. Peki bunu nasıl yapacağız?
Kod:
nesne_adı.özellik_adı
Bunu örneğimizde deneyelim.
Kod:
bilgisayar1.marka
'Lenovo' çıktısını verecektir.
Kod:
bilgisayar1.islemci
'intelcorei5' çıktısını verecektir.
Kod:
bilgisayar1.ram
8192 çıktısını verecektir.
Kod:
bilgisayar1.hafiza
500 çıktısını verecektir.

Şimdi ise yeni oluşturacağımız nesneye farklı değerler tanıtmamız gerekiyor. Python'da bunun için özel bir metod kullanacağız.
Kod:
__init__()
Öncelikle biz bir fonksiyon ile nesnemize oluşturabileceğimiz metodlara göz atalım.
Kod:
dir(bilgisayar1)
Bu kodumuzun çıktısı şu şekilde olacaktır.
Kod:
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 'marka',
 'islemci',
 'ram',
 'hafiza']
Burada gördükleriniz Python'da nesne oluşturduğumuzda(eğer kendimiz tanıtmazsak) varsayılan olarak tanımlar. Aralarında init fonksiyonunu görüyoruz.
Bu fonksiyon Python literatüründe constructor (yapıcı) fonksiyon olarak geçiyor.
Biz bu metodumuz ile nesnelerimize kendi istediğimiz değerleri tanıtabileceğiz.
Peki bunu nasıl yapacağız?
Kod:
class Bilgisayar():
        #Henüz sınıfımızın özelliklerine ihtiyacımız olmayacak.
     def __init__(self):
         print("init'i metodunu çağırdık.)
__init__ fonksiyonunun içerisinde gördüğünüz self parametresi, Türkçe karşılığından da anlyacağınız üzere kendini referans alır. Yani referans parametremiz olacaktır.

'self' parametresini daha iyi kavramak için şöyle bir kod yazalım;
Kod:
class Telefon():
    def __init__(self, marka, model, kamera)
          self.marka = marka # Parametremizi marka'ya tanıtıyoruz.
          self.model = model # Parametremizi model'e tanıtıyoruz.
          self.kamera = kamera #Parametremizi kamera'ya tanıtıyoruz.
Şimdi kendimiz bir nesne oluşturup, parametrelerini tanıtabiliriz.
Kod:
telefon1 = Telefon("IPhone","5s",8)
telefon2 = Telefon("Samsung","GalaxyNote5",12)
Bir nesneden özellik soralım;
Kod:
telefon1.marka
'IPhone' çıktısını verecektir.
Kod:
telefon1.model
'5s' çıktısını verecektir.
Kod:
telefon1.kamera
8 çıktısını verecektir. (Buradaki değer kamera megapikseli.)
Kod:
telefon2.marka
'Samsung' çıktısını verecektir.
Kod:
telefon2.model
'GalaxyNote5' çıktısını verecektir.
Kod:
telefon2.kamera
12 çıktısını verecektir.

Konumuzda son olarak init metodunu varsaylan değerlere çevirelim.

Kod:
class Telefon():
       
      def __init__(self, marka="Bilgi verilmemiş", model = "Bilgi verilmemiş", kamera = "Bilgi verilmemiş".
         self.marka = marka
         self.model = model
         self.kamera = kamera
Burdan bir özellik sorgulayalım;
Kod:
telefon1 = Telefon(kamera = 20)
Kod:
telefon1.kamera
Bize 20 çıktısını verecektir.
Kod:
telefon.marka
'Bilgi verilmemiş' çıktısını verecektir.
Kod:
telefon.model
'Bilgi verilmemiş' çıktısını verecektir.

__init__ metodumuz ile istediğimiz parametreleri oluşturduğumuz nesnemize tanıtmış olduk.




---------------------
This film is not recommended.
Ludwig van Federico
Twitter


Sessizer, Rhotav, Germiyan' Teşekkür etti.
Sessizer - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2017
Nereden:
000004
Mesajlar:
867
Konular:
35
Teşekkür (Etti):
658
Teşekkür (Aldı):
146
Ticaret:
(0) %
21-07-2018 23:55
#2
Eline saglk biraz renklendirirsen fena olmaz
---------------------


Gecem İtilaf Devletleri Sanki Ben İstiklal Marşıyım!

~Şanışer



hackertype - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2018
Nereden:
Sanal Alem
Mesajlar:
187
Konular:
42
Teşekkür (Etti):
26
Teşekkür (Aldı):
35
Ticaret:
(0) %
21-07-2018 23:58
#3
Güzel Anlatmışsın Eline Sağlık
---------------------
Gelecekte Bir Gün

Ddos Gibi Gir Damarlarıma
Layer 7 Gibi Tosla Duvara
Spoff Gibi Sersemlet Beni
Routing Aktif Olunca
Boşa Arama Beni
THE HACKER 21 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2017
Mesajlar:
2.941
Konular:
86
Teşekkür (Etti):
201
Teşekkür (Aldı):
926
Ticaret:
(0) %
25-07-2018 13:48
#4
Eline Sağlık

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı