Question
If Sports will be a main class. Cricket, volleyball, badminton and Tic-Tac-Toe are concrete classes.
- For each of concrete classes, create member functions to SetNumberOfTeamMembers, GetNumberOfTeamMembers, GetNameOfGame and Select_Captain.
- Overload class constructor for Cricket and Volleyball classes by providing TotalNumber as argument.
- Create a friend function “get_players_list” to print the list of players from cricket and volleyball team.
- Overload Operator ‘+’ which will add 2 objects from Tic-Tac-Toe and will print total number of players from these objects.
- Depict polymorphic behavior of the classes by create references of the parent class to concrete objects.
Answer
#include<iostream>
using namespace std;
//parent Sports Class for concrete classes
class Sports
{
public:
int numberOfTeamMembers = 0;
string NameOfGame, captain;
string palyerList[30]; //30 is the size that limits the maximum players in a team.
void SetNumberOfTeamMembers();
void GetNumberOfTeamMembers();
void GetNameOfGame();
void Select_Captain();
};
class Cricket: private Sports
{
int n;
public:
// Overloading class constructor
Cricket(int TotalNumber)
{
n = TotalNumber;
}
friend void get_players_list(Cricket cr);
void set_players_list()
{
cout<<endl<<"Enter Cricket Team Palyer Names:"<<endl;
for(int i=1; i<=numberOfTeamMembers; i++)
{
cin>>palyerList[i];
}
}
void GetNameOfGame()
{
cout<<endl<<"The name of the game is Cricket.";
}
void SetNumberOfTeamMembers()
{
numberOfTeamMembers = n; //n holds the value came from the constructor
}
void GetNumberOfTeamMembers()
{
cout<<endl<<"There are "<<numberOfTeamMembers<<" players in Cricket Team.";
}
void Select_Captain()
{
int n;
cout<<endl<<"Select number of the player to choose as Captain for Cricket Team(Number only): ";
cin>>n;
captain = palyerList[n-1];
cout<<captain<<" is selected as captain!";
}
};
class Volleyball: private Sports
{
int n;
public:
// Overloading class constructor
Volleyball(int TotalNumber)
{
n = TotalNumber;
}
friend void get_players_list(Volleyball vb);
void GetNameOfGame()
{
cout<<endl<<"The name of the game is Volleyball.";
}
void set_players_list()
{
cout<<endl<<"Enter Volleyball Team Palyer Names:"<<endl;
for(int i=0; i<numberOfTeamMembers; i++)
{
cin>>palyerList[i];
}
}
void SetNumberOfTeamMembers()
{
numberOfTeamMembers = n; //n holds the value came from the constructor
}
void GetNumberOfTeamMembers()
{
cout<<endl<<"There are "<<numberOfTeamMembers<<" players in Volleyball Team.";
}
void Select_Captain()
{
int n;
cout<<endl<<"Select number of the player to choose as Captain for Volleyball Team(Number only): ";
cin>>n;
captain = palyerList[n-1];
cout<<captain<<" is selected as captain!";
}
};
//friend function for cricket class
void get_players_list(Cricket cr)
{
cout<<endl<<"The Cricket Team Players list is as follows:"<<endl;
for(int i=0; i<cr.numberOfTeamMembers; i++)
{
cout<<i+1<<" ";
cout<<cr.palyerList[i]<<endl;
}
}
//friend function for Volleyball class
void get_players_list(Volleyball vb)
{
cout<<endl<<"The Volleyball Team Players list is as follows:"<<endl;
for(int i=0; i<vb.numberOfTeamMembers; i++)
{
cout<<i+1<<" ";
cout<<vb.palyerList[i]<<endl;
}
}
class badminton: public Sports
{
public:
void GetNameOfGame()
{
cout<<endl<<"The name of the game is Badminton.";
}
void SetNumberOfTeamMembers()
{
cout<<endl<<"Enter the total number of team members: ";
cin>>numberOfTeamMembers;
}
void GetNumberOfTeamMembers()
{
cout<<endl<<"There are "<<numberOfTeamMembers<<" players in Volleyball Team.";
}
void set_players_list()
{
cout<<endl<<"Enter Badminton Team Palyer Names:"<<endl;
for(int i=0; i<numberOfTeamMembers; i++)
{
cin>>palyerList[i];
}
}
friend void get_players_list(badminton bm);
void Select_Captain()
{
int n;
cout<<endl<<"Select number of the player to choose as Captain for Badminton Team(Number only): ";
cin>>n;
captain = palyerList[n-1];
cout<<captain<<" is selected as captain!";
}
};
//friend function for badminton class
void get_players_list(badminton bm)
{
cout<<endl<<"The Badminton Team Players list is as follows:"<<endl;
for(int i=0; i<bm.numberOfTeamMembers; i++)
{
cout<<i+1<<" ";
cout<<bm.palyerList[i]<<endl;
}
}
class TicTacToe: public Sports
{
public:
void GetNameOfGame()
{
cout<<endl<<"The name of the game is Tic Tac Toe.";
}
void SetNumberOfTeamMembers()
{
cout<<endl<<"Enter the total number of team members: ";
cin>>numberOfTeamMembers;
}
void GetNumberOfTeamMembers()
{
cout<<endl<<"There are "<<numberOfTeamMembers<<" players in Tic-Tac-Toe Team.";
}
void set_players_list()
{
cout<<endl<<"Enter Tic-Tac-Toe Team Palyer Names:"<<endl;
for(int i=0; i<numberOfTeamMembers; i++)
{
cin>>palyerList[i];
}
}
friend void get_players_list(TicTacToe t);
void Select_Captain()
{
int n;
cout<<endl<<"Select number of the player to choose as Captain for Tic-Tac-Toe Team(Number only): ";
cin>>n;
captain = palyerList[n-1];
cout<<captain<<" is selected as captain!";
}
//operator overloading to add two objects for their addition of numberOfTeamMembers
TicTacToe operator+(TicTacToe const &obj)
{
TicTacToe t;
t.numberOfTeamMembers = numberOfTeamMembers + obj.numberOfTeamMembers;
return t;
}
};
//friend function for TicTacToe class
void get_players_list(TicTacToe t)
{
cout<<endl<<"The Tic-Tac-Toe Team Players list is as follows:"<<endl;
for(int i=0; i<t.numberOfTeamMembers; i++)
{
cout<<i+1<<" ";
cout<<t.palyerList[i]<<endl;
}
}
int main()
{
Cricket cr(11); //here 11 is the number of team members, calling user-defined constructor
Volleyball vb(11); //here 11 is the number of team members, calling user-defined constructor
badminton bd;
TicTacToe t1;
TicTacToe t2;
TicTacToe t3 = t1 + t2; //op overloading to add two objects
int game;
cout<<"Select Game Number: "<<endl<<" 1-Cricket"<<endl<<" 2-Volleyball";
cout<<endl<<" 3-Badminto"<<endl<<" 4-Tic Tac Toe"<<endl<<"Input:";
cin>>game;
switch(game)
{
case 1:
cr.GetNameOfGame();
cr.SetNumberOfTeamMembers();
cr.GetNumberOfTeamMembers();
cr.set_players_list();
get_players_list(cr); //friend function, cr is an object of Cricket class
cr.Select_Captain();
break;
case 2:
vb.GetNameOfGame();
vb.SetNumberOfTeamMembers();
vb.GetNumberOfTeamMembers();
vb.set_players_list();
get_players_list(vb); //friend function, vb is an object of Volleyball class
vb.Select_Captain();
break;
case 3:
bd.GetNameOfGame();
bd.SetNumberOfTeamMembers();
bd.GetNumberOfTeamMembers();
bd.set_players_list();
get_players_list(bd);
bd.Select_Captain();
break;
case 4:
t1.GetNameOfGame();
t1.SetNumberOfTeamMembers();
t1.GetNumberOfTeamMembers();
t1.set_players_list();
get_players_list(t1);
t1.Select_Captain();
t2.GetNameOfGame();
t2.SetNumberOfTeamMembers();
t2.GetNumberOfTeamMembers();
t2.set_players_list();
get_players_list(t2);
t2.Select_Captain();
t3.GetNumberOfTeamMembers();
}
return 0;
}
TIP: Program can be improved by applying checkpoints to validate inputs.

