Cascading

أنشِئ Class :

اسمه: MyAge

المتغيرات : Year , Month , Day

يحوي :  Set functions و Print Function  و  default constructor.

* يجب أن تُكتب الـ functions حتى نستطيع أن نقوم بعمل Cascading Call في Main functions .

-قم بفصل الـ Class interface  في header file و Class implementation في cpp file

الحل:

طريقة كتابة الـ function حتى نستطيع القيام بعمل Cascading Call هي أن

  1. يكون الـ return type لها هو object من نفس نوع الـ Class بهذه الطريقة  ( & ClassName  ) .

  2. أن تكون الـ return value هي pointer للـ object الذي قام باستدعاء هذه الـ function وهو *this .

//.h
#include <iostream>
using namespace std; 

class MyAge
{
public:
 MyAge();
 MyAge &My_yers(int);
 MyAge &My_month(int);
 MyAge &My_day(int);
 void print();


private:
 int year;
 int month;
 int day;

};
------------------------------------------------------
//.cpp
#include <iostream>
#include "MyAge.h"
using namespace std;

MyAge::MyAge(){ year = 0; month = 0; day = 0; } //default constructor

MyAge & MyAge::My_yers(int y)
{
 year = y; //initialize years
 return *this; //return value
}

MyAge & MyAge::My_month(int m)
{
 month = m; //initialize month
 return *this; //return value
}

MyAge & MyAge::My_day(int d)
{
 day = d; //initialize day
 return *this; //return value
}

void MyAge::print()
{
 cout << year << "/" << month << "/" << day << endl; /*ptint out years and months */
}
-----------------------------------------------
//main
#include <iostream>
#include "MyAge.h"
using namespace std;

void main()
{
 MyAge age;

 age.My_yers(2000).My_month(1).My_day(20).print(); //Cascading Call

 system("pause");

}