BİL-142 Bilgisayar Programlama II
(C/C++)
Hazırlayan: [Link] Akcayol
Gazi Üniversitesi
Bilgisayar Mühendisliği Bölümü
Konular
Giriş
Kalıtım Hiyerarşisinde Nesneler Arasında İlişki
Derived Class Pointer’ı ve Base Class Nesnesi
Base Class Pointer’ı ve Derived Class Fonksiyonu
Upcasting ve Downcasting
Virtual Fonksiyonlar
1
Giriş
Polymorphism (çok biçimlilik), bir sınıf
nesnesinin başka bir sınıfın nesnesi gibi
davranmasını sağlar.
Bir sınıf nesnesi başka bir sınıfın veri üyelerine
erişebilir.
Bir sınıf nesnesi başka bir sınıfın fonksiyon üyelerine
erişebilir.
Konular
Giriş
Kalıtım Hiyerarşisinde Nesneler Arasındaki İlişki
Derived Class Pointer’ı ve Base Class Nesnesi
Base Class Pointer’ı ve Derived Class Fonksiyonu
Upcasting ve Downcasting
Virtual Fonksiyonlar
2
Kalıtım Hiyerarşisinde Nesneler Arasındaki İlişki
Kalıtım hiyerarşisindeki tüm nesnelerin sanki
base class’ın bir nesnesi gibi davranmasını
sağlar.
Bir program tanımlanan base class pointer’ı ile
derived class’tan oluşturulan nesnelerini
gösterebilir.
Kalıtım Hiyerarşisinde Nesneler Arasındaki İlişki
3
Temel Sınıflar ve Türetilmiş Sınıflar
Base class pointer’ı
ile türetilmiş class
nesnesi gösteriliyor.
Temel Sınıflar ve Türetilmiş Sınıflar
4
Konular
Giriş
Kalıtım Hiyerarşisinde Nesneler Arasındaki İlişki
Derived Class Pointer’ı ve Base Class Nesnesi
Base Class Pointer’ı ve Derived Class Fonksiyonu
Upcasting ve Downcasting
Virtual Fonksiyonlar
Derived Class Pointer’ı ve Base Class Nesnesi
Derived class pointer’ı ile base class nesnesi
gösterilemez.
Türetilmiş sınıf pointer’ı kullanılarak temel sınıf
nesnesindeki üyeler üzerinde işlem yapılamaz.
10
5
Derived Class Pointer’ı ve Base Class Nesnesi
11
Konular
Giriş
Kalıtım Hiyerarşisinde Nesneler Arasındaki İlişki
Derived Class Pointer’ı ve Base Class Nesnesi
Base Class Pointer’ı ve Derived Class Fonksiyonu
Upcasting ve Downcasting
Virtual Fonksiyonlar
6
Base Class Pointer’ı ve Derived Class Fonksiyonu
Base class pointer’ı ile derived class’a ait
fonksiyon çağrılamaz.
Derived class nesnesini gösteren base class
pointer’ını derived class pointer’ına doğrudan
dönüştürünce (explicit casting), sadece derived
class’ta olan üyelere erişim yapılabilir
(downcasting).
Base class pointer’ı derived class nesnesini
gösterebilir, ancak sadece base class fonksiyonlarını
çağırabilir.
13
Base Class Pointer’ı ve Derived Class Fonksiyonu
Base class pointer’ı ile derived class fonksiyonu çağrılamaz.
Base class pointer’ı
ile türetilmiş class
nesnesi gösteriliyor.
14
7
Base Class Pointer’ı ve Derived Class Fonksiyonu
Base class pointer’ı ile derived class fonksiyonu çağrılamaz.
15
Konular
Giriş
Kalıtım Hiyerarşisinde Nesneler Arasındaki İlişki
Derived Class Pointer’ı ve Base Class Nesnesi
Base Class Pointer’ı ve Derived Class Fonksiyonu
Upcasting ve Downcasting
Virtual Fonksiyonlar
8
Upcasting ve Downcasting
Upcasting:
Derived class nesnesinin base class pointer’ı ile
gösterilmesidir.
Güvenli olduğundan dolaylı (implicit) tür dönüşümü
yapılır.
Downcasting:
Derived class pointer’ı ile base class nesnesinin
(derived class nesnesinin pointer’ı) gösterilmesidir.
Güvenli olmadığından doğruda (explicit) tür
dönüşümü yapılır.
17
Upcasting ve Downcasting
18
9
Upcasting ve Downcasting
Türetilmiş class
pointer’ı ile base
class türündeki
pointer (türetilmiş
class nesnesini
gösteriyor)
gösteriliyor.
19
Konular
Giriş
Kalıtım Hiyerarşisinde Nesneler Arasındaki İlişki
Derived Class Pointer’ı ve Base Class Nesnesi
Base Class Pointer’ı ve Derived Class Fonksiyonu
Upcasting ve Downcasting
Virtual Fonksiyonlar
10
Virtual Fonksiyonlar
Belirlenen tür, hangi sınıfın fonksiyonunun
çalıştırılacağına karar verir.
Önceki örnekte, CommissionEmployee pointer’ı
üyesi olan print() fonksiyonu ile
BasePlusCommissionEmployee nesnesinin
değerlerini yazdırmaktadır.
BasePlusCommissionEmployee pointer’ı üyesi
olan print() fonksiyonu ile kendi değerlerini
yazdırmaktadır.
virtual fonksiyonlarla nesnenin türüne göre üye
fonksiyon çalıştırılır.
21
Virtual Fonksiyonlar
22
11
Virtual Fonksiyonlar
23
Virtual Fonksiyonlar
24
12
Virtual Fonksiyonlar
25
Virtual Fonksiyonlar
26
13
Virtual Fonksiyonlar
27
Virtual Fonksiyonlar
28
14
Virtual Fonksiyonlar
29
15