sports class

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.

Leave a Reply

Your email address will not be published. Required fields are marked *