package model; import java.util.Random; public abstract class AbstractFink implements Fink { protected String id; protected int maxAge; private int age; private int energy; private Random random; protected boolean lastPruned; private int offspring; public AbstractFink( String id, int maxAge, Random random ) { this.id = id; this.maxAge = maxAge; this.age = 0; this.energy = 20; this.random = random; } @Override public void addEnergy(int n) { energy = energy + n; } @Override public boolean alive() { return ( age <= maxAge ) && ( energy > 0 ); } @Override public void birthday() { age = age + 1; } @Override public int energy() { return energy; } @Override public void giveBirth() { if( energy > 25 ) { offspring += 1; energy -= 10; } } @Override public boolean lastPruned() { return lastPruned; } @Override public String name() { return id; } @Override public int offspringProduced() { return offspring; } @Override public void removeEnergy(int n) { energy = energy - n; } }