Hola LuisM
Por favor, si creas temas en el foro, ponle un título adecuado siguiendo las indicaciones que se dan en
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0Tu código se ve trabajado y cumple con lo que pedía el ejercicio
Puedo plantearte diversas cosas con vistas a mejorar.
a) Un diseño cuanto más simple sea, mejor. Esto quiere decir que si puedes hacer dos cosas de forma correcta, una de forma más simple y otra de forma más compleja, es preferible la forma simple, siempre que sea correcta.
Introducir una clase ObtenerLetra a mí me parece que complica más que aclara el ejercicio.
b) Las clases deben nombrarse correctamente. Un nombre de clase como ObtenerLetra no es adecuado. El nombre de una clase debe indicar lo que es (lo que representa) o lo que hace. Esta clase no representa un ObtenerLetra. Podrías llamarlo GestorDeLetras o GestorDeCadenasYLetras pero no ObtenerLetra porque eso no encaja en la forma de nombrar clases en programación orientada a objetos. Consulta este hilo
https://www.aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698c) Al nombrar métodos es preferible atenerse a los estándares. Por ejemplo en lugar de public void setValorCadena usaríamos public void setCadena, que es la forma estándar de nombrar este tipo de métodos por los programadores Java. Esto no quiere decir que no puedas hacerlo como lo has hecho, hacerlo puedes hacerlo, la cuestión es que si millones de programadores lo hacen de la misma manera y tú de otra, no vas a lograr entenderte con el resto de personas.
d) No todo lo que se usa en una clase debe ser un atributo. Por ejemplo public String cadena, letra; La letra es una parte de la cadena. Entonces estás almacenando algo (la parte) que ya tienes almacenado (en la cadena). Esto es contraproducente, no aporta nada repetir o tener atributos que se pueden extraer a partir de otros atributos.
Una cuestión interesante para aprender cuestiones de diseño y de fondo en programación Java es ver cómo responden otros usuarios los ejercicios en los foros, y también responder a otros usuarios que van más atrasados que nosotros en el curso, y ver distintos puntos de vista que plantea cada uno, tratando de valorar las ventajas e inconvenientes de lo que se plantea
Saludos