Hola MarckyMarck, tu código funciona bien y cumple lo que solicitaba el ejercicio. Cosas que debes tener en cuenta para mejorar:
- Añade métodos get y set siempre en tus clases, por ejemplo no tienes en la clase ListaCantantesFamosos public ArrayList<String> getLista() { return listaCantantes;}
- Intenta no hacer recorridos de bucles indicando números concretos como límites
for(int i=0;i<5;i++){
System.out.println(cantantes.showNombre(i));
}
Sería mejor:
for(int i=0;i<cantantes.getLista().size();i++){
System.out.println(cantantes.showNombre(i));
}
- Cada método debe tener una responsabilidad única, clara y bien definida. No es un buen diseño:
public void addNombre(){
IntroTexto nomCantante= new IntroTexto();
listaCantantes.add(nomCantante.getPalabra());
}
Este método debería recibir un cantante y añadirlo, eso es lo que hace un método add. Si querías un método para pedir un cantante y añadirlo a la lista deberías haberlo nombrado de otra manera por ejemplo
public void pedirNombreEInsertarEnLista(){
IntroTexto nomCantante= new IntroTexto();
listaCantantes.add(nomCantante.getPalabra());
}
Sin embargo este método no está tampoco bien diseñado, porque un método debe encargarse de una cosa y no de dos. Si es para pedir un nombre, no es para insertar, y si es para insertar, no es para pedir. Esto se llama cohesión de un método: cada método tiene su responsabilidad. Esto son bases de diseño para hacer buenos programas en Java.
Te recomiendo revisar el hilo
https://www.aprenderaprogramar.com/foros/index.php?topic=1549 y compararlo con tu código
Salu2!