public class Printer {
private int pageRate; // pages per minute (ppm)
private Task currentTask; // current task on printer
private int timeRemaining; // time remaining on current task
public Printer(int ppm) {
pageRate = ppm;
currentTask = null;
timeRemaining = 0;
}
public void tick() {
if (currentTask != null) {
timeRemaining--;
if (timeRemaining == 0) {
currentTask = null;
}
}
}
public boolean busy() {
return currentTask != null;
}
public void startNext(Task newTask) {
currentTask = newTask;
timeRemaining = newTask.getPages() * 60 / pageRate;
}
}