Thursday, July 30, 2015

Design a musical jukebox using OO principles | Runhe Tian Coding Practice



Design a musical jukebox using OO principles | Runhe Tian Coding Practice
Design a musical juke box using object oriented principles.
Apparently, you need have functionality of playlist which I didn’t come up.
I don’t understand why we need User class.
Perhaps we are thinking about two kinds of ‘jukebox’?
public class CD {
}
 
public class CDPlayer {
    private Playlist p;
    private CD c;
 
    public Playlist getPlaylist() {
        return p;
    }
 
    public void setPlaylist(Playlist p) {
        this.p = p;
    }
 
    public CD getCD() {
        return c;
    }
 
    public void setCD(CD c) {
        this.c = c;
    }
 
    public CDPlayer(Playlist p) {
        this.p = p;
    }
 
    public CDPlayer(CD c, Playlist p) {
        // TODO
    }
 
    public CDPlayer(CD c) {
        this.c = c;
    }
 
    public void playTrack(MySong s) {
        // TODO
    }
}
 
public class JukeBox {
    private CDPlayer cdPlayer;
    private User user;
    private Set<CD> cdCollection;
    private TrackSelector ts;
 
    public JukeBox(CDPlayer cdPlayer, User user, Set<CD> cdCollection,
            TrackSelector ts) { // TODO
 
    }
 
    public MySong getCurrentTrack() {
        return ts.getCurrentSong();
    }
 
    public void processOneUser(User u) {
        this.user = u;
    }
}
 
public class Playlist {
    private MySong track;
    private Queue<MySong> queue;
 
    public Playlist(MySong track, Queue<MySong> queue) { // TODO
 
    }
 
    public MySong getNextTrackToPlay() {
        return queue.peek();
    }
 
    public void queueUpTrack(MySong s) {
        queue.add(s);
    }
}
 
public class Song {
    private String songName;
}
 
public class TrackSelector {
    private MySong currentSong;
 
    public TrackSelector(MySong s) {
        currentSong = s;
    }
 
    public void setTrack(MySong s) {
        currentSong = s;
    }
 
    public MySong getCurrentSong() {
        return currentSong;
    }
}
 
public class User {
    private String name;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public long getID() {
        return ID;
    }
 
    public void setID(long iD) {
        ID = iD;
    }
 
    private long ID;
 
    public User(String name, long iD) { // TODO
 
    }
 
    public User getUser() {
        return this;
    }
 
    public User addUser(String name, long iD) {// TODO
        return null;
    }
}
Read full article from Design a musical jukebox using OO principles | Runhe Tian Coding Practice

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts