public class Bouquet {
//Fields
private Flower[] flowers;
//Constuctors
public Bouquet() {
this(new Flower[0]);
}
public Bouquet(Flower[] flowers) {
this.flowers = flowers;
}
//Accessors
public Flower getFlower(int index) {
return flowers[index]; }
public Flower[] getFlowers() {
return flowers; }
public double getCost() {
double cost = 0;
for (int i = 0; i < flowers.length; i++)
cost += flowers[i].getCost();
return cost;
}
public double getPrice(double discount) {
double price = 0;
for (int i = 0; i < flowers.length; i++)
price += flowers[i].getPrice();
return price * discount;
}
public int getSize() {
return flowers.length;
}
//Mutators
public void addFlower(Flower flower) {
int size = flowers.length;
Flower[] temp = new Flower[size + 1];
for (int i = 0; i < size; i++)
temp[i] = flowers[i];
temp[size] = flower;
flowers = temp;
}
public void removeFlower(Flower flower) {
Flower[] temp = new Flower[flowers.length - 1];
int newIndex = 0;
for (int i = 0; i < flowers.length; i++)
if (flowers[i] != flower)
temp[newIndex++]=flowers[i];
flowers = temp;
}
public void weed() {
/* Removes all flowers that are old */
int badFlowers = 0,
size = flowers.length;
//Search for old flowers
for (int i = 0; i < size; i++)
if (flowers[i].getDaysToLive() == 0)
badFlowers++; //counting total bad flowers
//If there are old flowers . . .
if (badFlowers != 0) {
Flower[] temp = new Flower[size - badFlowers];
int newIndex = 0;
for (int i = 0; i < size; i++)
if (flowers[i].getDaysToLive() != 0)
temp[newIndex++]=flowers[i];
flowers = temp;
}
}
}