상세 컨텐츠

본문 제목

Interface, Composition, Delegation

Java

by techbard 2016. 6. 29. 11:23

본문

반응형



# 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();

}

}



반응형

관련글 더보기

댓글 영역