Added: Sweet JavaDucks
This commit is contained in:
parent
0c64019755
commit
a60ed6afd7
1 changed files with 45 additions and 0 deletions
|
@ -6,6 +6,9 @@ import java.net.URL;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A delicious tuber that is eaten by peoples all over the world.
|
||||
*/
|
||||
public class Potato implements Tuber {
|
||||
|
||||
private final List<Condiment> condiments = new ArrayList<Condiment>();
|
||||
|
@ -20,24 +23,43 @@ public class Potato implements Tuber {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares the potato for consumption. Adds various condiments and prints them to stdout. Ensures that the potato
|
||||
* is delicious. If it is not, a {@link NotDeliciousException} is thrown.
|
||||
*
|
||||
* @throws NotDeliciousException If the potato is not delicious
|
||||
*/
|
||||
public void prepare() throws NotDeliciousException {
|
||||
this.addCondiments("sour cream", "chives", "butter", "crumbled bacon", "grated cheese", "ketchup", "salt", "tabasco");
|
||||
this.listCondiments();
|
||||
if(!this.isDelicious()) throw new NotDeliciousException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds condiments to the potato.
|
||||
*
|
||||
* @param names Names of the condiments to add
|
||||
*/
|
||||
public void addCondiments(String... names) {
|
||||
for (String condimentName : names) {
|
||||
this.condiments.add(new Condiment(condimentName));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the names of the condiments on this potato to stdout.
|
||||
*/
|
||||
public void listCondiments() {
|
||||
for (Condiment condiment : this.condiments) {
|
||||
System.out.println(condiment.getName());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the potato is put into the oven.
|
||||
*
|
||||
* @return true if potato is in the oven, false if otherwise
|
||||
*/
|
||||
public boolean isPutIntoOven() {
|
||||
try {
|
||||
final URL url = new URL("https://www.google.com/search?q=potato");
|
||||
|
@ -52,20 +74,38 @@ public class Potato implements Tuber {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if this potato is baked. Returns the result of {@link #isPutIntoOven()}.
|
||||
*
|
||||
* @return true if this potato is baked, false if otherwise
|
||||
*/
|
||||
public boolean isBaked() {
|
||||
return this.isPutIntoOven();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if this potato is delicious. Returns the result of {@link #isBaked()}.
|
||||
*
|
||||
* @return true if this potato is delicious, false if otherwise
|
||||
*/
|
||||
@Override
|
||||
public boolean isDelicious() {
|
||||
return this.isBaked();
|
||||
}
|
||||
|
||||
/**
|
||||
* Propagates a new potato.
|
||||
*
|
||||
* @return A new potato
|
||||
*/
|
||||
@Override
|
||||
public Tuber propagate() {
|
||||
return new Potato();
|
||||
}
|
||||
|
||||
/**
|
||||
* A type of food added to tubers.
|
||||
*/
|
||||
private class Condiment {
|
||||
private final String name;
|
||||
|
||||
|
@ -73,6 +113,11 @@ public class Potato implements Tuber {
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of this condiment.
|
||||
*
|
||||
* @return Name
|
||||
*/
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue