Inheritance (Miras)

Sizlere bu yazıda inheritance’ın programlamada ne anlama geldiğinden bahsedeceğim. Inheritance genel olarak Oject Oriented Programming’in (Nesne Yönelimli Programlama) kullanılan bir prensiptir. En basit  şekliyle: inheritance sayesinde bir sınıfın metodlarını kullanan başka sınıflar türetilebilmesine yarar diyebiliriz. 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. Örneğin; bir otobüs ve kamyon adında sınıfınız varsa bunların ortak özelliklerinde oluşan bir araç sınıfı yazarız. Otobüs ve kamyon,  bu araç sınıfından türemiş olur. Yani hiyerarşik bir yapı söz konusudur.
Önce araç (vehicle class) sınıfını yazalım.

#include<iostream>
#include<string>
using namespace std;
class Vehicle
{
private:
	string name;
	string sound;
	int speed;
	int weight;
public:
	
	Vehicle(string n,string s,int sp,int w)
	{
		name=n;
		sound=s;
		speed=sp;
		weight=w;
	}
	void show()
	{
		cout<<"Name.:"<<name<<endl;
		cout<<"Sound.:"<<sound<<endl;
		cout<<"Speed.:"<<speed<<endl;
		cout<<"Weight.:"<<weight<<endl;
	}
	
	void makeSound(int n=1)
	{
		for(int i=0;i<n;i++)
		{
			cout<<sound<<" ";
		}
		cout<<endl;
	}
};

Şimde de onda türeyecek olan kamyon sınıfını yazalım.

class Truck:public Vehicle
{
private:	
	int loadcapacity;
	int loaded;
public:
	Truck(string n,string s,int sp,int w,int lc):Vehicle(n,s,sp,w)
	{
		loadcapacity=lc;
		loaded=0;
	}

	void load(int ld)
	{
		if (ld<0) ld=0;
		else if(ld >loadcapacity) ld=loadcapacity;
		loaded=ld;
	}
	void show()
	{
		Vehicle::show();
		cout<<"LoadCapacity.:"<<loadcapacity<<endl;
		cout<<"Loaded.:"<<loaded<<endl;
	}

};

Ve son olarak gene araç sınıfından türemiş otobüs sınıfını yazalım.

class Bus:public Vehicle
{
private:
	int noOfpeople;
	int ticketprice;
	int money;
public:
	Bus(string n,string s,int sp,int w,int no,int p):Vehicle(n,s,sp,w)
	{
		noOfpeople=no;
		ticketprice=p;
	}
	void getMoney()
	{
		money=noOfpeople*ticketprice;
	}
	void show()
	{
		Vehicle::show();
		cout<<"Number of People.:"<<noOfpeople<<endl;
		cout<<"Ticket Price.:"<<ticketprice<<endl;
		cout<<"Money.:"<<money<<endl;
	}
};

Leave a Reply

Your email address will not be published. Required fields are marked *