You are developing a system for an audio library that stores Songs and Podcasts. Using the principles,
mechanisms, and techniques discussed in the course, modify the base code (attached in the
assignment) according to the following requirements.
1. Each music library is characterized with a name. It may also contains a natural language
description provided by the user. [2 points]
2. You application should make sure that there is only one object of the library at any time during
operation.[5 points]
3. Users of the library should be able to manage song s and podcast s to the library. Two songs are
considered the same if they have the same title and artist , similarly for podcasts but for the
fields of title and host . The application should prevent the users from creating duplicated
songs or podcasts. Hint: please consider alternatives to throwing exceptions when the same song
already exists in the library. Implement this constraint for Podcast as well. [5 points]
4. Support the function of managing playlists in the library. The playlist can contain songs and/or
episodes from podcasts. Two playlists should be considered the same if the content is the same
(i.e. they aggregate the same Playable objects in the same order), regardless of the name of the
two playlists. [5 points]
5. In Main.java, write runner code to show you have fulfilled all the requirements above. [3 points]
Notes
You don’t need to submit any diagram for this assignment. You can still use diagrams to support
your design process, but it won’t be graded.
For the sake of this assingment, String type is sufficient for the attributes such as artist name,
host name, title, library description, etc. The comparison of those attributes should be case
insensitive. For example, Taylor Swift and taylor swift are considered same name.
Reading and understanding a small codebase is an important skill. For any questions, please take
the time to review the codebase and make your best assumption. If confusion remains, you may
ask on Ed at least 24 hours before the due date of the assignment.
Submit a zip with filename StudentID_Firstname_Familyname . For example,
260912345_Taylor_Swift.zip .
Inside the zip, you should have:
. All the .java files of your solution, including the Main.java file;
. pdf file of a very short description (max. 100 words) for the design of your solution (major
decisions, techniques used, trade-offs, etc.)