Testing_Scripts/ClassInheritance/ClassInheritanceTester.mq5

167 lines
4.9 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 16:30:20 +02:00
//+------------------------------------------------------------------+
//| 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());
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+