FIRAT NVERSTES
This presentation is the property of its rightful owner.
Sponsored Links
1 / 18

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ PowerPoint PPT Presentation


  • 198 Views
  • Uploaded on
  • Presentation posted in: General

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ. KONU : KAPSÜLLEME VE KALITIM. DERLEYENLER: Ahmet Can ÇAKIL Ali Murat GARİPCAN Özgür AYDIN Şahin KARA. KONTROL : Prof. Dr. Asaf VAROL. Kapsülleme.

Download Presentation

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Firat n vers tes teknoloj fak ltes

FIRAT NVERSTES

TEKNOLOJ FAKLTES

KONU : KAPSLLEME VE KALITIM

DERLEYENLER:

Ahmet Can AKIL

Ali Murat GARPCAN

zgr AYDIN

ahin KARA

KONTROL : Prof. Dr. Asaf VAROL


Kaps lleme

Kapslleme

  • Genelde Class eleri(Property,Method), baka bir Class tarafndan kullanlmak amacyla yazlr. Bunun yannda baz Class eleri de dier elere yardmc olmak amacyla yazlr. Bu eler genellikle Class'n i ilerinde kullanlr. Belli bir Class' kullanan baka bir Class'n, i ilerde kullanlan bu eleri grmesi veya bilmesi gerekmez. Bu amala baz property ve methodlarn, ait olduu class dndan, eriimini snrlama zelliine encapsulation (kapslleme) denir.


Kal t m inheritance

Kaltm (inheritance)

  • Kaltm nesne tabanl programlamann temel elerinden biridir. nk,kaltm hiyerarik snflandrma oluturmay salar. Birbiriyle balantl bir grup elemann ortak zelliklerinden oluan bir snf oluturulabilir. Bu snf daha sonra yeni deiiklikler yaplarak daha zel snflara kaltm yoluyla aktarlr ve her snf kendisinde bulunan ek zellikleri buna aktarr. Bylece uygulamann yeni batan yazlmasna gerek kalmaz.


Kal t m inheritance1

Kaltm (inheritance)

  • Nesne tabanl programlamada kaltm yoluyla aktarlan snf, temel snftr. Kaltm ilemi yaplm olan snf da oluturulmu (tretilmi) snftr. Tretilmi snf, temel snf tarafndan tanmlanan tm metot, zellik, operatr ve deikenleri kaltm yoluyla elde eder ve sadece kendisinde kullanlacak zellikleri, deikenleri, metotlar vb.yi kendisine ekler.


Bunu bir rnekle g sterelim

Bunu bir rnekle gsterelim:

class Oyun:

def __init__(self):

self.enerji = 50

self.para = 100

self.fabrika = 4

self.isci = 10

def goster(self):

print ("enerji:", self.enerji)

print ("para:", self.para)

print ("fabrika:", self.fabrika)

print ("ii:", self.isci)


Firat n vers tes teknoloj fak ltes

def fabrikakur(self,miktar):

if self.enerji > 3 and self.para > 10:

self.fabrika = miktar + self.fabrika

self.enerji = self.enerji miktar*3

self.para = self.para miktar*10

print (miktar, "adet fabrika kurdunuz!

Tebrikler!)

else:

print ("Yeni fabrika kuramazsnz. nk

yeterli enerjiniz/paranz yok!)

macera = Oyun()


S n f rnekleyip al t r yoruz

Snf rnekleyip altryoruz


Firat n vers tes teknoloj fak ltes

imdi miras alabileceimiz bir snfmz var ve zelliklerini aktaracamz yeni bir snf tanmlayalm

Bunun iin snfmz yle tanmlamamz gerekiyor:

Class Rakip(Oyun):

  • Bylelikle daha en bata tanmladmz Oyun adl snf, bu yeni oluturduumuz Rakip adl

    snfa miras verdik (Rakipinheritsfrom Oyun)

  • Dolaysyla Rakip adl snf Oyun adl snfn btn zelliklerine sahip olmu oldu.


Firat n vers tes teknoloj fak ltes

  • Oyun snfnn birer fonksiyonu olan gosteri ve fabrikakur u Rakip snf iinden de altrabiliriz. stelik Rakip iinde bu deikenleri tekrar tanmlamak zorunda kalmadan. Programa

    aadaki kodlar ekleyip test edelim.

    class Rakip(Oyun):

    pass

    rakp=Rakip()


Firat n vers tes teknoloj fak ltes

Nitelik Ekleme:

  • Tretilmi snfn zelliklerine ek olarak bir de puan adl bir nitelii olmasn istiyorsak aadaki gibi bir yol izleriz.

  • nce yle deneyelim:

    Class Rakip(Oyun):

    def __init__(self):

    self.puan = 0

    Bu kodlar altrdmzda hata alrz. nk burada yeni bir __init__ fonksiyonu tanmladmz iin, bu yeni fonksiyon kendini Oyun snfnn __init__ fonksiyonunun zerine yazyor. Dolaysyla Oyun snfndan miras aldmz btn nitelikleri kaybediyoruz.


Firat n vers tes teknoloj fak ltes

Bunu nlemek iin yle bir ey yapmamz gerekir:

class Rakip(Oyun):

def __init__(self):

Oyun.__init__(self)

self.puan = 0

Burada Oyun.__init__(self) ifadesiyle Oyun adl

snfn __init__ fonksiyonu iinde yer

alan btn nitelikleri, Rakip adl snfn __init__

fonksiyonu iine kopyalyoruz. Bylece self.puan

deikenini tanmlarken, enerji, para, vb.

niteliklerin kaybolmasn engelliyoruz.

Kodlarmzn son halini topluca grelim ve

altralm


Firat n vers tes teknoloj fak ltes

  • Yukarda Rakip snf iin puan adl yeni bir nitelik tanmlamtk. Bu nitelik sadece Rakip tarafndan kullanlabiliyordu, Oyuncu tarafndan deil. Ayn ekilde, yeni bir nitelik belirlemek yerine, istersek var olan bir nitelii iptal de edebiliriz.

  • Diyelim ki Oyuncunun oyuna balarken fabrikalar olsun istiyoruz, ama Rakipin oyun balangcnda fabrikas olsun istemiyoruz. Bunu yle yapabiliriz:

    class Rakip(Oyun):

    def __init__(self):

    Oyun.__init__(self)

    del self.fabrika

    self.puan = 0


Firat n vers tes teknoloj fak ltes

  • Grdnz gibi Rakip snf iin __init__ fonksiyonunu tanmlarken fabrika niteliini del komutuyla siliyoruz. Bu silme ilemi sadece Rakip snf iin geerli oluyor. Bu ilem teki snflar etkilemiyor. Bunu yle de ifade edebiliriz:

    del komutu yardmyla fabrika adl deikene Rakip adl blgeden eriilmesini engelliyoruz.

  • Dolaysyla bu deiiklik sadece o blgeyi etkiliyor. teki snflar ve daha sonra oluturulacak

    yeni snflar bu ilemden etkilenmez. Yani aslnda del komutuyla herhangi bir eyi sildiimiz yok!

    sadece eriimi engelliyoruz.


Kaynak a

KAYNAKA

  • MIT OpenCourseWare

    http://ocw.mit.edu

    6.00 Introduction to Computer Science and

    Programming, Fall 2008

  • http://wiki.pardus-linux.org/index.php/Python

  • http://www.python.quotaless.com/


  • Login