Class Diagram for Assignment No. 2
Figure 1: Object Model of Song Library System
Also note that you don’t have to give actual implementation in c++ but simple stereotype (sketch) in the form of c++ code mentioning class names their parameters and functions with access specifiers.
You also have to show the relationship (inheritance, association, aggregation, composition) between classes in proper c++ syntax with comments.
Note: Every student will follow the above mentioned Object Model in order to develop solution of assignment No.2.
Example Object Model and its Prototype
#include<iostream.h>
#include<conio.h>
class Lesson{ // Lesson class
// Lesson class attributes
// Access specifier is by default private
int ID;
topic * title;//aggregation relationship b/w lessons and topic
int NoOfLessons;
public:// public access specifier
// Lesson class functions/ operations
void add();
void remove();
bool select();
void search();
void View();
void print();
void download();
};// end of Lesson class
// ************************************************************
// ************************************************************
// ************************************************************
class course{ //course class
//Attributes of course class
char * code;
topic title; //composition relationship b/w Course and topic
char * courseName;
int duration;
Lesson NoOfLessons;//composition relationship b/w Course and Lesson
public:// public access specifier
//course class functions/operations
void add();
bool select();
void View();
void read();
};// end of course class
// ************************************************************
// ************************************************************
// ************************************************************
class StudyProgram{ // StudyProgram class
//Attributes of StudyProgram
// Access specifier is by default private
char * Code;
char * title;
char * ProgramName;
course duration; //composition relationship b/w StudyProgram and course
public:// public access specifier
bool select();
char * ViewCourseList;
};// end of StudyProgram class
// ************************************************************
// ************************************************************
// ************************************************************
class topic{ // topic class
//topic class attributes
// Access specifier is by default private
int ID;
char * title;
public: // public access specifier
// topic class functions/ operations
void add();
void remove();
bool select();
void search();
void View();
void print();
void download();
};// end of topic class
// ************************************************************
// ************************************************************
// ***********************************************************
/****************** Assignment No. 2 : Solution **********************\
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
class User;
class Band;
class Track;
class Album;
class Artist;
class Listener;
class POP_Music;
class Film_Music;
class Folk_Music;
class Classic_Music;
class MusicItems;
class MusicCategory;
class Administrator;
class SongLibrarySystem;
class User //User class prototype
{
private:
int ID;
string Name;
public:
void playTrack();
void getName();
void getID();
};
class Listener:User //Listener class prototype and its relation with base class User, here Listener is child class
{
public:
void playTrack();
};
class Administrator:User //Administrator class prototype and its relation with base class User, here Listener is child class
{
private:
string Password;
public:
void getPassword();
bool addTrack();
bool deleteTrack();
bool updateTrack();
bool addArtist();
bool deleteArtist();
bool updateArtist();
bool addAlbum();
bool deleteAlbum();
bool updateAlbum();
bool addMusicCategory();
bool deleteMusicCategory();
bool updateMusicCategory();
};
class SongLibrarySystem //SongLibrarySystem class prototype which have aggregation relationship with User and Music Items
{
private:
User *user;
MusicItems *musicitem;
public:
void getUser();
void getMusicItem();
};
class MusicCategory //MusicCategory class prototype which have composition relationship with Music Items Also have four child classes as well along with aggregation relation with Band and Artist
{
private:
Artist *artist;
Band *band;
public:
void getAlbum();
void getTrack();
void getArtist();
};
class MusicItems //MusicItems class prototype which have aggregation relationship with Song Library System
{
private:
MusicCategory musiccategory;
public:
void getMusicCategory();
void getAlbum();
void getArtist();
void getTrack();
void getBand();
};
class Folk_Music:MusicCategory // Folk_Music class prototype which is inherited from MusicCategory
{
public:
void getBand();
void getArtist();
};
class Film_Music: MusicCategory //Film_Music class prototype which is inherited from MusicCategory
{
public:
void getBand();
void getArtist();
};
class POP_Music: MusicCategory //POP_Music class prototype which is inherited from MusicCategory
{
public:
void getBand();
void getArtist();
};
class Classic_Music: MusicCategory //Classic_Music class prototype which is inherited from MusicCategory
{
public:
void getBand();
void getArtist();
};
class Track //Track class prototype which have composition relation with Artist and Album
{
private:
string TrackName;
int TrackId;
string Lyrics;
public:
void playTrack();
void stopTrack();
void pauseTrack();
void downloadTrack();
void getTrackName();
void getTrackID();
void getLyrics();
};
class Album //Album class prototype which have composition relation with Artist
{
private:
int AlnumID;
string AlbumTitle;
int TrackNumber;
int Year;
Track track;
public:
void getTrack();
void vewTrack();
void vewTracknumber();
void viewYear();
void getAlbumID();
void getTitle();
};
class Artist //Artist class prototype which have aggregation relation with Music Category
{
private:
string ArtistName;
Album Albums;
Track Tracks;
public:
void getTrack();
void getAlbum();
void getArtistName();
void getMusicCategory();
};
class Band //Band class prototype which have aggregation relation with Music Category and composition relationship with Artist
{
private:
Artist art;
string BandName;
string BandDetails;
public:
void getArtist();
void getBandDetails();
void getBandName();
};
main ()
{
cout<<“This is just a prototype of all classes”;
cout<<endl;
system(“PAUSE”);
}
/****************** Download Solution from Here **********************\