• Sonuç bulunamadı

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

N/A
N/A
Protected

Academic year: 2022

Share "C++ Dersi: Nesne Tabanlı Programlama 2. Baskı"

Copied!
43
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

C++  Dersi:  

Nesne  Tabanlı  Programlama  

2.  Baskı  

Bölüm  13:  Miras  

³  

(2)

İçerik  

13.1    Miras  Kavramı    

13.2    Miras  Yönteminin  Uygulanması    

13.3    ErişimEKketleri:  public,  private,  protected     13.4    Miras  ve  Yapıcı  Fonksiyonlar    

13.5    Üst  Sınıf  Tanımlamasında  public,  private  ve   protected  Erişim  EKketlerinin  Kullanımı    

13.6    Üst  SınıQaki  Fonksiyonların  Alt  Sınıflarda  Tekrar   Tanımlanması    

13.7    Çoklu  Miras     Çözümlü  Sorular  

C++  Dersi:  Nesne  Tabanlı  

 

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

2  

(3)

Hedefler  

•  Verilen  sınıflar  arasında  miras  ilişkisi  kurma    

•  Aralarında  miras  ilişkisi  olan  sınıf  tanımlarını  dikkate  alarak  UML   sınıf  diyagramını  çizme    

•  public,  private  ve  protected  erişim  eKketlerinin  farklarını   açıklama    

•  Verilen  problem  tanımını  dikkate  alarak,  üst  sınıf  tanımlamasında,   public,  private  ve  protected  eKketlerinden  uygun  olanı  

seçme    

•  Alt  sınıflarda  üst  sınıfa  ait  yapıcı  fonksiyonları  çağırma    

•  Üst  sınıQa  tanımlı  olan  fonksiyonları  alt  sınıflarda  tekrar  tanımlama    

(4)

13.1  Miras  Kavramı  

•  İng.  Inheritance  

•  Var  olan  bir  sınıQan  bir  alt  sınıf  türeterek  üyelerin  alt  sınıfa   aktarılmasına  miras  adı  verilir.    

•  Sınıflar  arası  ilişkiyi  tanımlayarak  bir  hiyerarşi  kurulmasını   sağlar.    

•  İki  sınıf  arasındaki  veri  üyelerine  ve  üye  fonksiyonlarına  

bakıldığında  benzerlikler  var  ise,  ortak  olan  bu  üyeler  temel   bir  sınıQa  toplanır.    Bu  temel  sınıQan  türeyen  alt  sınıflar  bu   üyelere  miras  yoluyla  sahip  olurlar.    

•  Ortak  üyelere  ek  olarak,  alt  sınıf  kendine  özgü  yeni  veri  üyeleri   ve  üye  fonksiyonlar  tanımlayabilir.    

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

4  

(5)

13.1  Miras  Kavramı...  

•  Ogrenci  ve  Personel  sınıfları;  ad,  soyad,  tckimlik  ve  

adres  bilgilerini  Birey  sını`ndan  miras  olarak  alır .  

(6)

13.1  Miras  Kavramı...  

•  Özellikleri  miras  alınan  sınıfa  üst  sınıf  (superclass)   veya  taban  sınıf  (base  class),  miras  alan  sınıfa  ise  alt   sınıf  (subclass)  veya  türemiş  sınıf  (derived  class)  adı   verilir  

 

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

6  

(7)

13.1  Miras  Kavramı...  

•  Bir  üst  sınıf  sadece  kendi  bünyesinde  tanımlı  üyelere  erişebilir,  alt   sınıflarına  ait  üyelere  erişemez.    

•  Sınıflar  arasında  miras  ilişkisi  olup  olmadığını  daha  iyi  anlamak  için,  

“ tasarlanan  alt  sınıf  bir  üst  sınıQır”  önermesinin  doğru  olması  gereklidir.  

–  Öğrenci  bir  Birey’dir.  // doğru bir önermedir

–  Kare  bir  Daire’dir.    // doğru bir önerme değildir

 

(8)

13.2  Miras  Yönteminin  Uygulanması  

 

•  Miras  ilişkisi,  public  (genel),  private  (özel)    ve   protected  (korumalı)  olmak  üzere  üç  farklı  erişim   eKkeK  ile  kurulabilir.    

•  public  erişim  eKkeK,  üst  sınıQan  aktarılan  public   üyelere  alt  sınıQan  da  public,  protected  üyelere   protected  ve  private  üyelere  ise  private  olarak   erişileceğini  ifade  eder.  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

8  

(9)

13.2  Miras  Yönteminin  Uygulanması...  

•  Örnek  

(10)

13.2  Miras  Yönteminin  Uygulanması...  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

10  

(11)

13.3  Erişim  EIketleri:  public,  private,   protected  

•  public  erişim  eKkeK  ile  tanımlanmış  tüm   üyeler,  aralarında  miras  ilişkisi  olsun  olmasın   diğer  tüm  sınıflar  tara`ndan  erişilebilir  

üyelerdir.  

•  private  erişim  eKkeKne  sahip  tüm  sınıf   üyelerine  dışarıdan  erişim  kapailır.  

•  protected  eKkeK  ile  tanımlanan  üyelere  

sadece  alt  sınıflar  erişebilir.  

(12)

13.3  Erişim  EIketleri:  public,  private,   protected...  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

12  

•  Örnek  

(13)

13.3  Erişim  EIketleri:  public,  private,  

protected...  

(14)

13.3  Erişim  EIketleri:  public,  private,   protected...  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

14  

(15)

13.4  Miras  ve  Yapıcı  Fonksiyonlar  

•  Alt  sınıf  Kpinde  bir  nesne  yarailırken  öncelikle  üst  sını`n   yapıcı  fonksiyonu  çağrılır,  daha  sonra  alt  sını`n  yapıcı  

fonksiyonu  çağrılır.  

•  Yıkıcı  fonksiyonlar  için  ise  bu  tam  tersidir:  öncelikle  alt  sını`n  

yıkıcı  fonksiyonu,  onun  ardından  üst  sını`n  yıkıcı  fonksiyonu  

çağrılır.  

(16)

13.4  Miras  ve  Yapıcı  Fonksiyonlar...  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

16  

(17)

13.4  Miras  ve  Yapıcı  Fonksiyonlar...  

(18)

13.4  Miras  ve  Yapıcı  Fonksiyonlar...  

•  Örnek  

–  Birey  sını`  üst  sınıQır    

–  Ogrenci  sını`  Birey  sını`nın  alt   sını`dır    

–  Ogrenci  sını`nın  sahip  olduğu  veri   üyeleri,  miras  yoluyla  aldığı  ad,  soyad   ve  kendi  sahip  olduğu  ogrenciNo  ve   ortalama’dır.    

–  Ogrenci  sını`nın  sahip  olduğu  üye   fonksiyonlar,  miras  yoluyla  aldığı   profiliYaz()  ve  kendi  içerisinde   tanımladığı  ortalamaAl()  

fonksiyonlarıdır.    

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

18  

(19)

13.4  Miras  ve  Yapıcı  Fonksiyonlar...  

(20)

13.4  Miras  ve  Yapıcı  Fonksiyonlar...  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

20  

(21)

13.4  Miras  ve  Yapıcı  Fonksiyonlar...  

(22)

13.5  Üst  Sınıf  Tanımlamasında  public,  private   ve  protected  Erişim  EIketlerinin  Kullanımı  

•  İki  sınıf  arasında  miras  ilişkisinin   kurulması  için  :  işareKnin  hemen   ardından  üst  sını`n  adı  yazılır  

•  Üst  sını`n  adı  yazılırken,  söz  konusu   sını`n  hemen  önüne  bir  erişim  eKkeK   konur.    

– public,  private  veya  protected      

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

22  

(23)

•  Erişim  eKketleri,  alt  sını`n  üst  sını`n  üyelerine   erişip  erişemeyeceğini  ya  da  nasıl  erişeceğini   farklı  şekillerde  tanımlar.    

13.5  Üst  Sınıf  Tanımlamasında  public,  private  

ve  protected  Erişim  EIketlerinin  Kullanımı...  

(24)

•  Üst  sınıQaki  private  üyelere  alt  sınıQan  erişilemez.  

•  Üst  sınıQaki  protected  üyeleri  alt  sını`n  private  üyeleri  olarak   kabul  edilir.  

•  Üst  sınıQaki  public  üyeleri,  alt  sını`n  private  üyeleri  olarak   kabul  edilir.  

class  B:  private  A  {};  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

24  

13.5  Üst  Sınıf  Tanımlamasında  public,  private  

ve  protected  Erişim  EIketlerinin  Kullanımı...  

(25)

•  Üst  sınıQaki  private  üyelere  alt  sınıQan  erişilemez.  

•  Üst  sınıQaki  protected  üyeleri  alt  sını`n  protected  üyeleri   olarak  kabul  edilir.  

•  Üst  sınıQaki  public  üyeleri,  alt  sını`n  protected  üyeleri   olarak  kabul  edilir.  

class  B:  protected  A  {};  

13.5  Üst  Sınıf  Tanımlamasında  public,  private  

ve  protected  Erişim  EIketlerinin  Kullanımı...  

(26)

•  Üst  sınıQaki  private  üyelere  alt  sınıQan  erişilemez.  

•  Üst  sınıQaki  protected  üyeleri  alt  sını`n  protected  üyeleri   olarak  kabul  edilir.  

•  Üst  sınıQaki  public  üyeleri,  alt  sını`n  public  üyeleri  olarak   kabul  edilir.  

class  B:  public  A  {};  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

26  

13.5  Üst  Sınıf  Tanımlamasında  public,  private  

ve  protected  Erişim  EIketlerinin  Kullanımı...  

(27)

13.6  Üst  SınıSaki  Fonksiyonların  Alt   Sınıflarda  Tekrar  Tanımlanması    

•  İng.  Redefining  

•  Üst  sınıQa  tanımlanan  fonksiyon,  alt  sınıQa  aynı   isimle  yeniden  tanımlanmasıdır.    

•  Örnek:  

(28)

13.6  Üst  SınıSaki  Fonksiyonların  Alt   Sınıflarda  Tekrar  Tanımlanması…    

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

28  

(29)

13.6  Üst  SınıSaki  Fonksiyonların  Alt  

Sınıflarda  Tekrar  Tanımlanması…    

(30)

13.6  Üst  SınıSaki  Fonksiyonların  Alt   Sınıflarda  Tekrar  Tanımlanması…    

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

30  

(31)

13.7  Çoklu  Miras  

•  İng.  Mul6ple  Inheritance  

•  Bir  sını`n  birden  fazla  üst  sınıfa  sahip  olması   durumudur  

•  Çoklu  miras  ile  bir  sınıf,  birden  çok  sınıfa  ait   özellikleri  aynı  anda  miras  olarak  alabilir.    

•  Tekli  miras  kadar  yaygın  bir  kullanımı  olmasa  

da  birden  çok  sınıfla  ortak  özelliklerin  olduğu  

durumlarda  tercih  edilen  bir  yöntemdir.  

(32)

13.7  Çoklu  Miras…  

•  Örnek:  Bir  akademik  kurumda  henüz  doktora  öğrencisi  olan  ve  bir   yandan  da  öğretmenlik  yapan  bir  asistanı  ele  alalım.  Bu  asistan   doktora  öğrencisi  olduğu  için  Ogrenci’dir  ve  aynı  zamanda  

öğretmenlik  yapiğı  için  bir  Ogretmen’dir.  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

32  

(33)

13.7  Çoklu  Miras…  

(34)

13.7  Çoklu  Miras…  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

34  

(35)

Çözümlü  Sorular…  

Soru

Cevap

(36)

Çözümlü  Sorular…  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

36  

Soru…

(37)

Çözümlü  Sorular…  

Soru

(38)

Çözümlü  Sorular…  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

38  

Cevap

(39)

Çözümlü  Sorular…  

Soru

(40)

Çözümlü  Sorular…  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

40  

Cevap…

(41)

Çözümlü  Sorular…  

Cevap…

(42)

Çözümlü  Sorular…  

C++  Dersi:  Nesne  Tabanlı  

Programlama  ©  2014,2012   Çiğdem  Turhan  

Fatma  Cemile  Serçe  

42  

Cevap…

(43)

Çözümlü  Sorular…  

Cevap

Referanslar

Benzer Belgeler

Sanal üst sınıf kullanıldığında ise en alt seviyedeki sınıfın (Asistan) dahi en üst seviyedeki sınıfın (Birey) yapıcı fonksiyonunu çağırması

Yani siz referans türünden bir değişken tanımladığınızda değişkenin kendisi stack bellek bölgesinde tutulacak ancak değer olarak nesnenin heap bellek bölgesindeki

 Fonksiyon başlık tanımındaki dizi değişkeni ile gönderilen dizi elemanlarının türü aynı olmalıdır.  Diziler referanslı olarak çağrılan fonksiyonlara

 friendly türünde erişim belirleyicisine sahip olan global alanlar (statik veya değil) içerisinde bulundukları paketin diğer sınıfları tarafından erişilebilirler.. 

 Yeni türetilen sınıf, türetildiği sınıfın global alanlarına ve yordamlarına (statik olsa dahi) otomatik olarak sahip olur (private olanlara doğrudan erişim yapamaz.)..

 Soyut bir sınıftan türetilmiş alt sınıflara ait nesneler, bu soyut sınıf tipindeki referanslara bağlanabilirler (upcasting).  Böylece polimorfizm ve geç

 statik dahili üye sınıf içerisindeki statik bir yordamı çağırmak için ne statik dahili üye sınıfına ne de onu çevreleyen sınıfa ait nesne oluşturmak gerekmez.

 Tüm istisnaları yakalamak (Error, RuntimeException ve diğer Exception türleri) için Throwable istisna tipi kullanılabilir.  Ancak, oluşabilecek istisnalar için bu üç