/** * Model of a copy machine. * * @author Jeff Raab */ public class CopyMachine { /** * Number of copies to make. * @invariant copies >= 0 */ protected int copies = 0; /** * Darkness of copies. * @invariant 1 <= darkness <= 10 */ protected int darkness = 5; /** * Copy mode. * @invariant 1 <= mode <= 3 */ protected int mode = 1; /** * Constructs a new copy machine * ready to make 0 copies in mode 1 with darkness 5. */ public CopyMachine() {} /** Sets the number of copies to make to 0. */ public void clear() { copies = 0; } /** Adds 1 to the number of copies. */ public void plus1() { copies++; } /** * Adds 1 to the darkness level. * * If the darkness level is already 10, * this method does nothing. */ public void darker() { if (darkness == 10) return; darkness++; } /** * Subtracts 1 from the darkness level. * * If the darkness level is already 1, * this method does nothing. */ public void lighter() { if (darkness == 1) return; darkness--; } /** Selects the next copy mode. */ public void mode() { if (mode == 3) mode = 1; else mode++; } /** Returns the number of copies to make. */ public int getCopies() { return copies; } /** Returns the darkness level. */ public int getDarkness() { return darkness; } /** Returns the copy mode. */ public int getMode() { return mode; } }