Hola!
Estuve revisando tu ejercicio. En general lo veo bien.
Sin embargo me gustaría hacer algunas observaciones para mejorar el código.
Respecto a la clase EntradaTeclado. La idea de una clase que cree objetos que manejen los datos provenientes del teclado está muy bien. Sin embargo creo que su codificación podría hacerse más eficiente.
Igualmente renombraría también la clase por un nombre que sea más acorde a lo que hace. Por ejemplo llamaría a esta clase GestionadorEntradasTeclado.
Reescribo esta clase de la manera en que pienso sería más eficiente:
import java.util.Scanner;
public class GestionadorEntradasTeclado{
Scanner scaner;
public GestionadorEntradasTeclado(){
scaner = new Scanner(System.in);
}
public String recogerCadena(){
String entrada = scaner.nextLine();
return entrada;
}
}
fíjate que se define solo un método recogerPalabra(). Este método lo que hace es devolver una cadena (tipo String) cada vez que se la invoca.
De esta manera, podríamos reescribir la clase Test de la siguiente manera:
public class Test{
public static void main(String arg[]){
ListaCantantesFamosos listaCantantes = new ListaCantantesFamosos();
GestionadorEntradasTeclado teclado = new GestionadorEntradasTeclado();
System.out.print("Dame el nombre de un cantante famoso : ");
listaCantantes.addCantante(teclado.recogerCadena());
System.out.print("Dame un segundo nombre de cantante famoso : ");
listaCantantes.addCantante(teclado.recogerCadena());
System.out.println("El contenido de la lista de cantantes famosos es el siguiente :");
for (int i=0; i<listaCantantes.getTamaño();i++){
System.out.println(listaCantantes.getCantante(i));
}
System.out.println("Fin del programa");
}
}
Como puedes ver, una diferencia respecto de la versión anterior, es que declaramos solo un objeto tipo GestionadorEntradasTeclado, y lo usamos dos veces.
El método teclado.recogerCadena() devuelve un String que es el nombre del cantante. Y a su vez ese String es el parámetro del método listaCantantes.addCantante que lo agrega a la lista.
Fíjate que reutilizamos el recurso 'teclado'. Si tuviéramos que ingresar 100 cantantes, utilizaríamos siempre el mismo objeto.
Una última cosa: la letra 'ñ' castellana es preferible no usarla cuando programamos. Por lo tanto al método getTamaño() bien podríamos renombrarlo por getTamanno o getTamanio.
Analízalo y cualquier duda acá estamos para revisarlo nuevamente.