C ++ Abstraksiya

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Məlumatların götürülməsi xarici dünyaya və onların arxa plan detallarını gizlədərək yalnız vacib məlumat verir. Mücərrədləşdirmə, Obyektivyönlü Proqramlaşdırmanın əsas konsepsiyalarından biridir. Bir sinif, digər siniflər və ya funksiyalarla əlaqə qura bilən bir "varlığı" təmsil edir. Ancaq sinif məlumatları və davranışları haqqında məlumatları gizlədə bilər. İstifadə edərək edilə bilər private məlumat üzvləri və funksiyaları. Sinif yalnız sinif xaricində faydalı olan lazımi məlumatlara giriş təmin etməli və onun daxili təmsilçiliyini gizlətməliyik.

Aşağıdakı sətirə baxın:

cout << "Hello!" << endl;

Bilirsiniz ki, bu xətt obyektdən istifadə edərək konsolda “Salam” yazacaqdır cout sinif ostream. Bu cout obyekt bizim üçün mücərrəddir. Nin daxili təmsilçiliyi haqqında heç bir şey bilmirik ostream sinif. Çıxış üçün istifadə edirik, ancaq Windows əməliyyat sistemi ilə necə əlaqəli olduğunu bilməyə ehtiyac yoxdur.

Məlumatların götürülməsi proqramların effektivliyini artırır. Bir avtomobiliniz varsa və avtomobil açarı qoyaraq başlayır. Bir avtomobilin mühərrikinin içərisindəki çəndən yanacağın necə çıxdığını və bujini istifadə edərək necə alov aldığını və mühərrik daxilindəki yanacağın yanmasından sonra təkərlərin necə döndüyünü anlamağa ehtiyac yoxdur. Bir avtomobil idarə edərkən bütün bu detallar sizdən götürülür. Bu abstraktlar sayəsində bir avtomobili effektiv şəkildə idarə edə bilərsiniz, çünki sizə asanlıqla idarə etməyinizi təmin edən yalnız vacib məlumatlar sizə görünür.

Üzv dəyişənləri və funksiyaları sinif xaricində bizə görünən etmək üçün istifadə etməliyik public əvəzinə müəyyənləşdiricilərə giriş private.

Bir sinif istifadə edərək xarici dünya ilə əlaqə qurur public məlumat üzvü funksiyaları. Bu üzv funksiyalar tez-tez çağırılır interface bir sinif. Bir sinif tərtib edərkən, sinfi ayırmalısınız həyata keçirilməsi interfeysi ilə bir sinif. Bu, interfeys kodunu dəyişdirmədən sinif davranışını asanlıqla dəyişdirmək imkanı verəcəkdir.

Aşağıdakı Abstraksiya nümunəsinə baxın:

class myStack
{
//interface of class myStack
//this is only accessible for user
public:

	//allocate memory for stack
	myStack(int _size = 50)
	{
		size = _size;
		stack = new int[size];
		//initially stack is empty
		top = -1;
	}
	
	//add value to stack
	bool push(int i)
	{
		if (isFull())
			return false;
		else
		{
			top++;
			stack[top] = i;
		}
	}
	
	int pop()
	{
		if (isEmpty())
			throw new exception("Stack is empty");
		else
		{
			return stack[top--];
		}
	}
	
//hidden data members and member functions
private:

	//return true if stack is full
	bool isFull()
	{
		return size == top - 1;
	}
	
	bool isEmpty()
	{
		return top == -1;
	}
	
	int size;
	int* stack;
	int top;
};

Gördüyünüz kimi, myStack sinfi yalnız dəyərləri açmaq və itələmək və yığının ölçüsünü təyin etmək imkanı verir. Dəyərin necə daxil edildiyini və necə qaytarıldığını bilmirsən. Yığın əməliyyatının əsas məqsədi üçün bu sinfi istifadə edirsiniz:
myStack s(5);
for (int i = 0; i != 5; ++i)
{
	cout << "pushing " << i << endl;
	//add values to stack
	s.push(i);
}
	
cout << "popping from stack" << endl;
for (int i = 0; i != 5; ++i)
{
	cout << s.pop() << endl;
}

 

Crack Sistemi Dizayn Müsahibələri
Translate »