Congratulations! You are now the lead engineer for an exciting
new music streaming start-up,
and you are responsible for building a proof of concept version of
the product. It’s your job to
apply all of the principles we’ve learned this semester about OOP
design and make this new
unicorn a reality.
Accounts
There are two different accounts possible on your platform: an
artist account, and a listener
account. Only artist accounts can be listed as the creator of
content. Listener accounts should
have a member variable to store all of the content favorited by
that user and a method favorite()
that accepts a piece of content as input and adds that content to
the listener’s favorites.
Content
Your streaming service contains two different types of listenable
content: songs and podcasts.
Each piece of content should have a title, account of the artist, a
list of up to 3 genres, and the
number of times streamed. Podcasts should have an additional member
variable for the episode
number. All listenable content should also have a play method,
which will increment the times
streamed by 1.
All content should implement the Comparable interface and be sorted
by number of times
streamed.
Content Collections
Your listenable content can be arranged into two different possible
collection objects: playlists
(which can contain a mix of podcasts and songs) and albums (which
can only contain songs).
Each collection should have a title and then a list containing all
pieces of content in the
collection. Collections should also have a method shuffle() that
will play content from the
collection in a random order. Playlists should include methods that
allow songs to be added and
removed from the collection.
All content collections should implement the Comparable
interface and be sorted by number of items in the collection.
Designing a Solution
Your classes should take advantage of inheritance to minimize
duplication of code. All classes
should have necessary constructors, mutators, accessors, and
toString methods. The goal of
the assignment is to make these classes as easy to reuse as
possible.
You should start by implementing the necessary classes and
interfaces required to fulfill the
criteria listed above. Make sure to test the functionality of each
class as you go before moving
on.
Once complete, you will implement a driver class, called
Driver.java, which will allow users to
create an account and “listen” to music or curate playlists.
When the Driver class is run it should display the following
options:
1. Create a listener account
2. List all Playlists and Albums available to shuffle
3. Add songs to an existing playlist
4. Export all songs on the platform out to a file in ascending
order by times streamed
5. Exit
Each of the options should prompt for the required information as
needed.
Your code should handle all exceptions (e.g., for file processing)
appropriately.
Congratulations! You are now the lead engineer for an exciting new music streaming start-up, and you are responsible for
-
answerhappygod
- Site Admin
- Posts: 899604
- Joined: Mon Aug 02, 2021 8:13 am
Congratulations! You are now the lead engineer for an exciting new music streaming start-up, and you are responsible for
Join a community of subject matter experts. Register for FREE to view solutions, replies, and use search function. Request answer by replying!