167 lines
4.9 KiB
MQL5
167 lines
4.9 KiB
MQL5
|
//+------------------------------------------------------------------+
|
||
|
//| ClassInheritanceTester.mq5 |
|
||
|
//| Dream Company |
|
||
|
//| zucarato@gmail.com |
|
||
|
//+------------------------------------------------------------------+
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Script program start function |
|
||
|
//+------------------------------------------------------------------+
|
||
|
|
||
|
|
||
|
//--------------------------------------------------------------------
|
||
|
// CLASS DEFINITIONS
|
||
|
//--------------------------------------------------------------------
|
||
|
|
||
|
//--------------------------------------------------------------------
|
||
|
//--------------------------------------------------------------------
|
||
|
class CKid
|
||
|
{
|
||
|
|
||
|
protected:
|
||
|
|
||
|
string name;
|
||
|
int age;
|
||
|
CKid *sibling;
|
||
|
|
||
|
public:
|
||
|
|
||
|
// Constructor
|
||
|
CKid() { name=""; age=0; sibling=NULL; }
|
||
|
|
||
|
string GetName() {return name;}
|
||
|
void SetName(string nameinput) { name=nameinput; }
|
||
|
|
||
|
int GetAge() { return age; }
|
||
|
void SetAge(int ageinput) {age=ageinput;}
|
||
|
|
||
|
void ChangeSiblingName(CKid& kid, string nameinput);
|
||
|
void ChangeOtherSiblingName(string nameinput) { sibling.SetName(nameinput); }
|
||
|
|
||
|
void SetSibling(CKid &siblinginput) { sibling = &siblinginput; }
|
||
|
|
||
|
};
|
||
|
|
||
|
//--------------------------------------------------------------------
|
||
|
//--------------------------------------------------------------------
|
||
|
class CParent
|
||
|
{
|
||
|
|
||
|
protected:
|
||
|
|
||
|
string name;
|
||
|
int age;
|
||
|
|
||
|
CKid son1;
|
||
|
CKid son2;
|
||
|
|
||
|
public:
|
||
|
|
||
|
// Constructor
|
||
|
CParent();
|
||
|
|
||
|
string GetName() {return name;}
|
||
|
void SetName(string nameinput) { name=nameinput; }
|
||
|
|
||
|
int GetAge() { return age; }
|
||
|
void SetAge(int ageinput) {age=ageinput;}
|
||
|
|
||
|
string GetSon1Name() { return son1.GetName(); }
|
||
|
string GetSon2Name() { return son2.GetName(); }
|
||
|
int GetSon1Age() { return son1.GetAge(); }
|
||
|
int GetSon2Age() { return son2.GetAge(); }
|
||
|
|
||
|
void SetSon1Name(string nameinput) { son1.SetName(nameinput); }
|
||
|
void SetSon2Name(string nameinput) { son2.SetName(nameinput); }
|
||
|
void SetSon1Age(int ageinput) { son1.SetAge(ageinput); }
|
||
|
void SetSon2Age(int ageinput) { son2.SetAge(ageinput); }
|
||
|
|
||
|
void SetKidName(CKid& changer, CKid& changed, string nameinput);
|
||
|
void Son1ChangesSiblingName(string nameinput) { son1.ChangeOtherSiblingName(nameinput); }
|
||
|
void Son2ChangesSiblingName(string nameinput) { son2.ChangeOtherSiblingName(nameinput); }
|
||
|
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
//--------------------------------------------------------------------
|
||
|
// GLOBAL SCOPE OBJECTS
|
||
|
//--------------------------------------------------------------------
|
||
|
|
||
|
CParent parent;
|
||
|
|
||
|
|
||
|
//--------------------------------------------------------------------
|
||
|
// METHODS IMPLEMENTATIONS
|
||
|
//--------------------------------------------------------------------
|
||
|
|
||
|
void CKid::ChangeSiblingName(CKid& kid, string nameinput)
|
||
|
{
|
||
|
int i;
|
||
|
}
|
||
|
|
||
|
|
||
|
//--------------------------------------------------------------------
|
||
|
//--------------------------------------------------------------------
|
||
|
CParent::CParent(void)
|
||
|
{
|
||
|
|
||
|
name = "";
|
||
|
age = 0;
|
||
|
|
||
|
son1.SetAge(7);
|
||
|
son1.SetName("Davi");
|
||
|
|
||
|
son2.SetAge(3);
|
||
|
son2.SetName("Lucas");
|
||
|
|
||
|
son1.SetSibling(son2);
|
||
|
son2.SetSibling(son1);
|
||
|
|
||
|
}
|
||
|
|
||
|
//--------------------------------------------------------------------
|
||
|
//--------------------------------------------------------------------
|
||
|
void CParent::SetKidName(CKid& changer,CKid& changed,string nameinput)
|
||
|
{
|
||
|
|
||
|
//changer.ChangeSiblingName(changed, nameinput);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
//--------------------------------------------------------------------
|
||
|
// EVENT HANDLERS
|
||
|
//--------------------------------------------------------------------
|
||
|
|
||
|
//--------------------------------------------------------------------
|
||
|
//--------------------------------------------------------------------
|
||
|
void OnStart()
|
||
|
{
|
||
|
//---
|
||
|
|
||
|
parent.SetName("Eduardo");
|
||
|
parent.SetAge(39);
|
||
|
|
||
|
Print("This is the parental class testing script.");
|
||
|
|
||
|
Print("Name of Parent: ", parent.GetName());
|
||
|
Print("Age of Parent: ", parent.GetAge());
|
||
|
|
||
|
Print("Name of son1: ", parent.GetSon1Name());
|
||
|
Print("Age of son1: ", parent.GetSon1Age());
|
||
|
|
||
|
Print("Name of son2: ", parent.GetSon2Name());
|
||
|
Print("Age of son2: ", parent.GetSon2Age());
|
||
|
|
||
|
Print("Son1 changes name of son2.");
|
||
|
parent.Son1ChangesSiblingName("Johnny");
|
||
|
Print("Son2 current name: ", parent.GetSon2Name());
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//+------------------------------------------------------------------+
|
||
|
//+------------------------------------------------------------------+
|