# IMachine.java
package printing;
public interface IMachine
{
public void turnOn();
public void turnOff();
public boolean isOn();
}
# Machine.java
package printing;
public class Machine implements IMachine
{
protected boolean isOn;
public Machine(boolean isOn)
{
this.isOn = isOn;
}
public void turnOn()
{
isOn = true;
System.out.println("Machine is On!");
}
public void turnOff()
{
isOn = false;
}
@Override
public boolean isOn()
{
return isOn;
}
}
# Printer.java
package printing;
public class Printer implements IMachine
{
private String modelNumber;
private PaperTray paperTray = new PaperTray();
private Machine machine;
public Printer(boolean isOn, String modelNumber)
{
machine = new Machine(isOn);
this.modelNumber = modelNumber;
}
@Override
public void turnOn()
{
System.out.println("Warming up print.");
machine.turnOn();
}
@Override
public void turnOff()
{
machine.turnOff();
}
public void print(int copies)
{
String onStatus = "";
if (machine.isOn())
onStatus = " is On !";
else
onStatus = " is Off !";
String textToPrint = this.modelNumber + onStatus;
while (copies > 0 && !paperTray.isEmpty())
{
System.out.println(textToPrint);
copies--;
paperTray.usePaper();
}
if (paperTray.isEmpty())
{
System.out.println("Load more paper!");
}
}
public void print(String text)
{
System.out.println(text);
}
public String getModelNumber()
{
return this.modelNumber;
}
public void loadPaper(int count)
{
paperTray.addPaper(count);
}
@Override
public boolean isOn()
{
return machine.isOn;
}
}
# PaperTray.java
package printing;
public class PaperTray
{
int pages = 0;
public void addPaper(int count)
{
pages = pages + count;
}
public void usePaper()
{
pages--;
}
public boolean isEmpty()
{
return pages <= 0;
}
}
# Printer_Driver.java
package printing;
public class Printer_Driver
{
public static void main(String[] args)
{
IMachine machine = new Printer(true, "My Printer");
machine.turnOn();
}
}
댓글 영역