Kalıtım (Inheritance) Kocaeli Üniversitesi
Kalıtım (Inheritance) Kodların çok kez kullanımı (Software reusability) Mevcut Sınıflardan Yeni Sınıflar Oluşturma Mevcut sınıfın değişken ve fonksiyonları kullanılabilir. Yeni değişken ve fonksiyonlar eklenebilir. Türetilmiş sınıf (Derived class) Temel Sınıfın (base class) özelliklerini miras alır 2
Kalıtım (Inheritance) 3
Kalıtım (Inheritance) 4
Kalıtım (Inheritance) 5
Kalıtım (Inheritance) Sayici.cpp 6
Kalıtım ve Erişim Düzeyleri (public kalıtım) Erişim public protected private Sınıf Üyeleri X X X Türerilmiş Sınıf Üyeleri X X Gizli Üye Olmayanlar X Gizli Gizli Türetilmiş sınıf üyeleri temel sınıfın private üyelerine doğrudan erişemezler. 7
Türetilmiş sınıfta temel sınıf üye erişilebilirliği Türetilmiş sınıf üyeleri tarafından doğrudan erişilebilir. Türetilmiş sınıf üyeleri tarafından doğrudan erişilemez. Temel sınıfın public ve protected üyeleri kullanılarak erişilir. 8
Nesneler Arası İlişki (Association) 1. Kalıtım 2 ya da daha fazla sınıf farklı olmakla birlikte benzer özelliklere sahip ise, ortak özelliklerini içeren temel sınıf tanımlanarak diğer sınıflar bu sınıftan türetilir. is a ilişkisi ( kind of ) kalıtım türetilmiş sınıf nesnesi temel sınıf nesnesi gibidir araba is a araç Kalıtım Örnekler Temel Sınıf : Türetilmiş Sınıf Dörtgen : Kare, Dikdörtgen, Paralel Kenar Araç : Araba, Kamyon, Tır, Tren Personel: Kadrolu, Sözleşmeli, Mevsimlik 2. Association uses a has a ilişkisi owns a is part of ( whole/part ) bileşim (kalıtımla ilgisi yoktur) Nesneler diğer sınıfların nesnelerini üye olarak içerirler. araba gaz pedalı, direksiyon, vites kutusu den oluşur 9
Nesneler Arası İlişki (Association) 2. Association uses a has a ilişkisi owns a is part of ( whole/part ) bileşim (kalıtımla ilgisi yoktur) Nesneler diğer sınıfların nesnelerini üye olarak içerirler. araba gaz pedalı, direksiyon, vites kutusu den oluşur 10
Kalıtım ve Yapıcılar 1. Türetilmiş sınıfa ait bir nesne oluşturulduğunda türetilmiş nesnesinin yapıcısı çağrılır. 2. Bu yapıcının komutları işletilmeden önce temel sınıf yapıcısı çalıştırılır. (Bu işlem kalıtım hiyerarşisinin en üst basamağına kadar yapılır). Türetilmiş sınıf içerisinde temel sınıf yapıcısı çağrılmamışsa varsayılan yapıcı, aksi takdire çağrılan yapıcı çalıştırılır. 3. Temel sınıf yapıcısının çalışması bittikten sonra türetilmiş sınıf yapıcısı çalıştırılır. 4. Türetilmiş sınıf içerisinde temel sınıf yapıcısı çağırmak için adını ve parametresini yazmak yeterlidir. 5. Son çalıştırılan yapıcı, ilk çağrılandır. Yapıcılar.cpp 11
Kalıtım ve Zorlanmış (Overridden) Fonksiyonlar Bir üye fonksiyonun hem temel sınıf hem de türetilmiş sınıf içerisinde tanımlanmasına denir. 1. Bir üye fonksiyon hem temel sınıf hem de türetilmiş sınıf içerisinde tanımlanırsa, türetilmiş sınıftan oluşturulan nesne türetilmiş sınıf içerisindeki fonksiyonu kullanır. 2. Türetilmiş sınıf içerisindeki üye fonksiyondan temel sınıfa ait üye fonksiyon çağrılabilir. Bunun için Temel Sınıf::Üye fonksiyon yapısı kullanılır. (Stack::push(12)) 3. Temel sınıfa ait bir nesne oluşturulursa bu nesne türetilmiş sınıf üyelerini kullanamaz. Staken.cpp 12
Personel Programı Personel.h Kadrolu.h, Saatli.h, PersonelUygulama.cpp 13
Kalıtım (Miras Alma, Inheritance) Üç düzeyli kalıtım hiyerarşisi Nokta Daire Silindir x-y koordinatları x-y koordinatları yarıcap x-y koordinatları yarıcap yukseklik 14
Çoklu Kalıtım A C B class A {. }; class B {. }; class C: public A, public B {. }; Örnek 15
Çoklu Kalıtım coklukalitimsorun.cpp 16
Çok Şekillilik (Polymorphism) ve Sanal Fonksiyonlar (Virtual Functions) Çok şekillilik bir nesnenin birden fazla şekil alabilmesidir. Bu ise kalıtım özelliğinin bir sonucudur. Kadrolu personel aynı zamanda personeldir Özellikle farklı nesneleri içeren veri toplulukları oluşturmak için kullanılabilir virtual void maasbilgigir() const = 0;// Pure virtual fonksiyon En az bir pure virtual fonksiyon içeren sınıf abstract (soyut) sınıf olarak adlandırılır. Soyut sınıftan yeni bir nesne oluşturulamaz (işaretçi ve referans kullanılabilir ) Türetilmiş sınıflarda pure virtual fonksiyonlar zorlanmalıdır Tamamen pure virtual fonksiyon içeren sınıflara interface (arayüz) denir Arayuzler bir sınıfın, davranışlarının nasıl olacağını değil, davranışlarının neler oldugunu tanımlar. Arayuzlerden yeni sınıflar turetip sanal fonksiyonların zorlanması gerekir Polymorphism/PersonelUygulama.cpp 17
18
19
20
21
22
23
24
25
Veritabanı Bağlantısı Gereksinimler Mysql sunucusu Mysql sunucuda çalışan bir veritabanı uygulaması Mysql C++ sürücüsü (kitaplık) 26
Kaynaklar Robert Lafore, Object Oriented Programming in C++, Macmillan Computer Publishing Deitel, C++ How To Program, Prentice Hall Binnur Kurt, http://www3.itu.edu.tr/~bkurt/courses/oop/polymorphism_v2.pdf Feza Buzluca, http://ninova.itu.edu.tr/tr/dersler/elektrik-elektronik-fakultesi/21/blg-252e/ 27