Write a program in C++ language that implements a music player using Doubly Circular Linked List using OOP concepts. This assignment has four parts: 1- Write a class(new type) to define the Song type. 2- Implement the Doubly Circular Linked List, which will operate with Song type. 3- Implement the Music Player 4- Test it in the main function All Constructors should use the initializer list. 1. Song class 1- class song #include <iostream> using namespace std; class Song{ private: string songTitle; string singerName; public: Song(); Song(string, string); virtual ~Song(); string getSongTitle(); string getSingerName(); void setSongTitle(string); void setSingerName(string); friend ostream& operator<<(ostream& os, Song& p){ os << ": "<<"{"<<p.songTitle<<" : "<<p.singerName<<"}"; return os; } }; 2- CNode class #include <iostream> #include "Song.h" using namespace std; class CNode{ private: Song elem; CNode *next; CNode *prev; friend class CircleDLinkedList; }; 3- CircleDLinkedList class #include <iostream> #include "CNode.h" using namespace std; class CircleDLinkedList{ private: CNode* cursor; int size; public: CircleDLinkedList(); ~CircleDLinkedList(); bool empty(); void advance(); void add(Song &s); void remove(); void print(); int getSize() const; }; 4- MusicPlayer class #include <iostream> #include "CircleDLinkedList.h" using namespace std; class MusicPlayer{ private: string type; //will hold the type of the music player int size; //the current number of the songs CircleDLinkedList playerList; // list of the songs, CircleDLinkedList is the Doubly Circular Linked List public: MusicPlayer(string); virtual ~MusicPlayer(); void play(); //plays the current song, meaning that this method will print the properties of the Song void next(); //moves to the net song and plays it void previous(); ////moves to the previous song and plays it void add (Song); //adds a song before the current song void remove(); //removes the current song void print(bool);//prints all songs that are in the list, starting from current to left is bool param is true }; 5- Test it in the main function Create e musicplayer with 3 songs. Play the current song. Play the next song. Play the next song. Play the next song. Play the previous song. Print the list of the songs using bool parameter true. Print the list of the songs using bool parameter false. Remove the current song from the musicplayer. Play the current song. Play the next song. Play the next song. Play the next song. Print the list of the songs using bool parameter true. Print the list of the songs using bool parameter false..