Hola rogergcc. Ambas clases están bien construidas y funcionan correctamente.
En la clase ListaCantantesFamosos olvidaste importar las clases java.util.ArrayList y java.util.Scanner. Seguramente las habías cargado en tu código pero habrás olvidado copiarlo en el post del foro, ya que de otra manera no te habría funcionado.
Otro detalle es que en el constructor de esa misma clase no debes pasar como parámetro un ArrayList, sólo las variables locales con las que vas a completar los campos. Fíjate que si quieres instanciar la clase con el constructor que pide parámetros, no tendrás cómo completar ese campo.
Ahora vamos con tus preguntas.
1 - No estoy seguro de entender bien esta pregunta, pero si te refieres a que si se le puede pedir al usuario que determine cuántos objetos quiere añadir al ArrayList, eso seguro que es posible. No es lo que se pedía en este ejercicio, pero si el programador decide darle esa facultad al usuario, entonces sí tendría sentido.
2 - Cuando el código corre el riesgo de volverse repetitivo, debemos buscar la manera de simplificarlo con un bucle. Ya sea que el numero de elementos a añadir esté prefijado, o bien preguntándole al usuario si quiere añadir un nuevo elemento al finalizar cada rulo del bucle, para condicionar la continuidad o el fin del ciclo.
3 - Esta idea es muy válida, y de hecho se utiliza bastante. Puedes crear una clase EntradaDeTeclado, que básicamente sería una cosa así:
import java.util.Scanner;
public class EntradaTeclado {
private String entrada;
public EntradaTeclado (){
String entrada = "";
}
public void pedirEntrada () {
Scanner nuevaEntrada = new Scanner (System.in);
entrada = nuevaEntrada.nextLine();
}
}
A esta clase le puedes crear todos los metodos que te vayan a resultar útiles en distintos programas, como por ejemplo getLongitud(), getEntrada(), getPrimeraLetra(), etc.
Cuando quieres utilizar esta clase desde una clase main, creas nuevas instancias de esta manera:
EntradaTeclado entrada2 = new EntradaTeclado ();
e invocas sus métodos como los de cualquier objeto.
Espero haberte sido de ayuda.