Buenas, para quien revise este ejercicio hay algún detalle que creo mejorable. En la clase Programa aparece esta línea:
while(numEliminar<1 || numEliminar>4)
Aquí el número 4 hace referencia al número de animales en la lista, que se supone es 4. Pero ¿qué ocurre si hay otro número de animales en la lista? Que el código ya no funcionaría correctamente. Por ello, es preferible evitar programar indicando un número explícito como 4 y en su lugar usar el método size() que nos da una solución más general.
Esto puede verse en este otro hilo que recomiendo consultar:
https://aprenderaprogramar.com/foros/index.php?topic=6875.0Salu2