ilgiliforum facebook   ilgiliforum instagram   ilgiliforum youtube   ilgiliforum tumblr   ilgiliforum pinterest   ilgiliforum rss  

C++ // Single Inheritance ( Tekli Miras Alma )

 
Bu konu ile benzer olabilecek diğer forum sayfaları
 
 
 
 
Bu yazıda C++'da "inheritance" (miras alma) konusuna giriş yapacağız. Önce miras almanın ne demek olduğunu görelim.
 
Miras alma var olan ana sınıflara ('base class) yeni özellikler ekleyerek ya da gerekirse sahip olduğu özellikleri değiştirerek yeni altsınıflar ('derived class') oluşturma yoludur. Bir klas, miras alma hiyerarşisi içerisinde hem miras alınan hem de miras alan bir konumda olabilir.
 
 
 
Yukarda gördüğünüz şema bir sınıf(klas) hiyerarşisi olarak adlandırılabilir. Tüm geometrik şekiller temel bir 'şekil' klası tanımlanarak bu klastan miras alma (inherit etme)yoluyla tanımlanıyor. Örneğin yukarıdaki dikdörtgen klası şekil klasına bağlı olan, onun özelliklerini aynen taşıyan ve hatta ekstra özelliklere sahip olan bir klas olarak karşımıza çıkmaktadır. Aynı şekilde kare şekli özel bir dikdörtgen olması yönü ile dikdörtgenin özelliklerini aynen içerir. Örneğin dikdörtgen klasında bize alanı veren bir fonksiyon ondan türetilmiş kare klasında tekrardan tanımlanabilir.
 
Miras alma bir programdaki objelerin sınıflandırılarak programdaki her bir parçanın görevi belirli , sınıflandırılmış yapılara ayrılmasını ve programın karmaşıklıktan uzaklaştırılarak okunaklı, anlaşılır bir hale gelmesini sağlar. Mesela Microsoft Visual C++'da yazılmış bir programa ait objeler önceden visual C++'da sizin için tanımlanmış objelerin miras alma yolu ile elde edilmiş türevleri olarak tanımlanır. Örneğin şu anda kullanmakta olduğunuz explorer ya da netscape windowu çok büyük olasılıkla 'window' gibi temel pencere özellikleri taşıyan bir klas'dan miras alınmış olması gerekir.
 
Şimdi miras alma ile ilgili ufak bir iki örneğe geçelim.
 
 
Alıntı:

 
enum material_type {tahta, çelik, aluminyum, plastik};
class shape {
public:
int i_d;
float x,y;
material_type material ;
};
gibi bir ana klasimiz olsun. Biz bu klastan aşağıdaki gibi bir yolla bu ana klası miras alarak yeni bir klas oluşturabiliriz.
 
 
Alıntı:

 
class diskublic shape {
public:
int i_d;
float radius() {return radius;}
private:
float radius ;
};
Bu durumda;
 
Alıntı:

 
shape s;
disk d;
s=d;
gibi anlamlı ve kullanışlı bir atama yapabiliriz.
 
Eğer disk klasımızın public kısmında da aynı shape klasında olduğu gibi bir
int i_d;
değişkeni tanımlanmış olsaydı bu durumda iki ayrı i_d değişkenimiz olurdu ve
d.i_d = 100;
dediğimiz zaman miras alan durumundaki disk klasının üye değişkenine erişmiş olurduk. Ancak hala
d.shape::i_d = 10;
gibi bir satırla ana shape klasına ait i_d değişkenine erişme sansımız mevcut.
 
Benzer şekilde eğer klaslarımız şu şekilde tanımlamış olsaydık;
 
 
 
Alıntı:

 
 
class shape {
public:
float give_area(){return area;}
private:
float area;
};
class diskublic shape {
public:
float give_area(float radius){
return (3.14*radius*radius);
}
private:
float radius ;
};
Bu durumda cout<<d.give_area(10.0) diyerek türev klasdaki fonksiyona erişebiliriz ancak cout<<d.give_area gibi bir satır prototipi uygun olan ana klasdaki fonksiyona erişmeye çalışacağından dolayı derleyicinin bize hata vermesini sağlayacaktır.
 
Ancak hala cout<<d.shape::give_area() gibi bir satırla ana klasdaki fonksiyona ulaşma şansımız var.
 
Miras alma(inheritance) konusuna bu ay bu kadarlık giriş yapmış olalım.

ALINTIDIR
 
 
Forumlar okunmak ve paylaşmak içindir...

 
 

 ~ 

Bu konunun linki : 

Yukarıdaki linki arkadaşlarınıza göndermek için kullanabilirsiniz ve bu sayfada; C++ // Single Inheritance ( Tekli Miras Alma ) hakkında bilgiler nedir yazıları veya şiirleri gibi sözleri veya resimleri C++ // Single Inheritance ( Tekli Miras Alma ) siteleri gibi benzer birçok forum konularını bulabilirsiniz.

 ~ 

Son Forum Mesajları

Kaynak linkimizi belirtmek koşulu ile her türlü bilgiyi kopyalayabilirsiniz. Forum içerisinde yazılan tüm mesajların hukuki sorumlulukları mesajları yazanlara aittir. Üyeler, üyelik sözleşmesi gereği bu kuralı kabul etmiş sayılır. Ziyaretçilerimiz bu forumu kullanmadan önce Forum Kurallarını okumak zorundadırlar. Aksi durumda meydana gelecek bütün olumsuz durumlardan ziyaretçilerin bizzat kendileri sorumludur. Sitemizde telif, kişi haklarına; yasalara aykırı olduğunu düşündüğünüz bir konu görürseniz bize aşağıdaki iletişim adresinden ulaşabilirsiniz.

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 960

© 2006-2019 ilgiliFORUM.com