Davut KARA

Bilişim Sistemleri Mühendisi

Bu blog, 5 yıl önce, bilişim ve diğer konularda hakkında, makalelerime yer vermek amacı ile açılmıştır.

Compe 225 | C++ Ders 15 inheritance Nedir ?

C++ BannerInheritance konusunda amaç, classları tek bir, veya birden çok çatı altında toplayıp birbiriyle ilişkilendirerek, code repeatation (kod tekrarı) en aza indirgeyerek daha verimli ve esnek bir kullanım sağlamaktır.. Bu konuya şöyle bir örnek verebiliriz.

A class ının name,surname,id,phone_number, adress gibi veriable (değişken) ları olduğunu varsayalım.

B clas ının da name,surname,id, money veriableları olduğunu varsayalım.

Şimdi A ve B classında ortak olan veriable lar mevcut. Dolayısıyla biz bir C classı yapıp ortak veriableları bu class da tanımlayıp A ve B yi inherit ederek C deki veriablları kullanmasını sağlayabiliriz,

Bu durumda

C classı : name,surname,id

A classı : C classı + phone_number,adress

B classı : C classı + money

Gibi düşünebilirsiniz, bu şekilde bir yazım normalde yok mantık açısından anlamak için bu şekilde yazdım.

Bu işin UML Diagram’da şematize hali vardır. Asıl gösterimi bu şekildedir.

Not: Veriable örneği verdim diye sadece veriable lar geçerli değildir aynı zamanda class fonksiyonlarınıda kullanabilirsiniz.

 

inheritance1

 

 

Yukarıdaki örneği incelediğimizde gayet açık bir şekilde görebiliyoruz. Circle ve Square class ları Figure classını bir nevi alt classı gibi durumda. Figure classınada sahip olabiliyorlar.

Şimdi bu kısımda önemli bir bilgi şudur, Üstteki class a base class, parent class alltaki classlara derived class, child class da denir. Alltakiler üstekine erişiyorken, üstteki class alttaki classa erişemez zaten mantıklı düşününcede öyle olmasını gerektiğini anlarsınız.

Bizim için daha önemli olan şey kod yazımının nasıl olduğudur, bunuda aşağıdaki örneği inceleyerek anlayalım.

class Person {
 public:
	string myName;
	int age;

	void setAge(int a){
	age=a;
	}

	int getAge(){
	return age;
	}

	void setName(string n1){
	myName=n1;
	}

	string getName(){
	return myName;
	}
};

class Student : public Person { // Kullanımı bu şekilde ALT : ÜST şeklinde düşünebilirsiniz.
	 public:

	int id;
	void setID(int d){
	id = d;
	}

	int getID(){
	return id;
	}


	void setAll(string nameTemp, int ageTemp, int idTemp){
	myName = nameTemp;
	age = ageTemp;
	id = idTemp;
	}
};
int main(){
Student p;
p.setName("Mehmet");
p.setAge(45);
p.setID(232323);
p.setAll("Mehmet",45,4545);
cout << p.getName() << endl;
cout << p.getAge() << endl;
cout << p.getID() << endl;// This belongs to Student class
}

inheritence konusu budur, bir sonraki derste, public private kısımlarına ek olarak protected konusunu anlatacağım. Protected genelde inheritence için kullanılıyor.