rendered paste bodypublic class HW5 {
public static void main(String[] args) {
PetStore pet_store = new PetStore(9, 17, "Pets R Us");
FoodStore food_store = new FoodStore(0, 25, "Foodmart");
//why is this 25 allowed? why doesn't it throw an exception that stops the program?
BookStore book_store = new BookStore(12, 21, "Ninja Books");
System.out.println(pet_store.printHours());
System.out.println(pet_store.printObjects());
System.out.println(food_store.printHours());
System.out.println(food_store.printObjects());
System.out.println(book_store.printHours());
System.out.println(book_store.printObjects());
}
}
abstract class Store {
//constants
protected final int DEFAULTHOUR = 9;
protected final String DEFAULTNAME = "Unknown";
public final static int SMALLESTHOUR = 0;
public final static int LARGESTHOUR = 23;
//protected data
protected static int numObjects;
protected int openHour;
protected int closeHour;
protected String storeName;
//abstract methods
public abstract String printHours();
public abstract String printObjects();
//common methods
public boolean isOpen(int hour) {
if(hour >= openHour || hour <= closeHour)
return true;
return false;
}
//mutators
public void setOpen(int openHour) {
checkHour(openHour);
this.openHour = openHour;
}
public void setClose(int closeHour) {
checkHour(openHour);
this.closeHour = closeHour;
}
public void setName(String storeName) {
this.storeName = storeName;
}
//accessors
public int getOpen() {
return openHour;
}
public int getClose() {
return closeHour;
}
public String getName() {
return storeName;
}
//utility
private void checkHour(int n) {
if(n < SMALLESTHOUR || n > LARGESTHOUR)
throw new NumberFormatException("Hour outside of acceptable range");
}
}
class PetStore extends Store {
private boolean sellsCats;
private boolean sellsDogs;
private boolean sellsFish;
public PetStore() {
numObjects++;
setOpen(DEFAULTHOUR);
setClose(DEFAULTHOUR);
setName(DEFAULTNAME);
}
public PetStore(int openHour, int closeHour, String storeName) {
numObjects++;
setOpen(openHour);
setClose(closeHour);
setName(storeName);
}
public String printHours() {
return "Pet Store \""+storeName+"\" opens at " + openHour + " closes at " + closeHour;
}
public String printObjects() {
return "PetStore sees " + numObjects + " objects";
}
public boolean getSellsCats() {
return sellsCats;
}
public boolean getSellsDogs() {
return sellsDogs;
}
public boolean getSellsFish() {
return sellsFish;
}
public void setSellsCats(boolean sellsCats) {
this.sellsCats = sellsCats;
}
public void setSellsDogs(boolean sellsDogs) {
this.sellsDogs = sellsDogs;
}
public void setSellsFish(boolean sellsFish) {
this.sellsFish = sellsFish;
}
}
class FoodStore extends Store {
private boolean sellsLiquor;
public FoodStore() {
numObjects++;
setOpen(DEFAULTHOUR);
setClose(DEFAULTHOUR);
setName(DEFAULTNAME);
}
public FoodStore(int openHour, int closeHour, String storeName) {
numObjects++;
setOpen(openHour);
setClose(closeHour);
setName(storeName);
}
public String printHours() {
return "Food Store \""+storeName+"\" opens at " + openHour + " closes at " + closeHour;
}
public String printObjects() {
return "Food Store sees " + numObjects + " objects";
}
public boolean getSellsLiquor() {
return sellsLiquor;
}
public void setSellsLiquor(boolean sellsLiquor) {
this.sellsLiquor = sellsLiquor;
}
}
class BookStore extends Store {
private boolean sellsCoffee;
public BookStore() {
numObjects++;
setOpen(DEFAULTHOUR);
setClose(DEFAULTHOUR);
setName(DEFAULTNAME);
}
public BookStore(int openHour, int closeHour, String storeName) {
numObjects++;
setOpen(openHour);
setClose(closeHour);
setName(storeName);
}
public String printHours() {
return "Book Store \""+storeName+"\" opens at " + openHour + " closes at " + closeHour;
}
public String printObjects() {
return "Book Store sees " + numObjects + " objects";
}
public boolean getSellsCoffee() {
return sellsCoffee;
}
public void setSellsCoffee(boolean sellsCoffee) {
this.sellsCoffee = sellsCoffee;
}
}