Puedes hacer todas las preguntas que gustes, no hay problema
No se que tanta practica tienes exactamente (si estas comenzando con java o ya tienes experiencia en otro lenguaje orientado a objectos)
El criterio de buena lógica siempre es un tema de largas y constantes discusiones, para resumirte un poco la cosa... todo depende del contexto en el que te encuentres y que características arquitectónicas quieras priorizar (con características arquitectónicas me refiero a eficiencia, mantenibilidad, escalabilidad, seguridad, entre otras).
Sin embargo hay una división fuerte que personalmente siempre me gusta ver, la cual es la separación de la interfaz y el dominio.
Donde las clases del dominio son todas aquellas que te permiten resolver todos los pedidos que tu sistema necesita hacer, mientras que las clases de interfaz son aquellas que tienen como destino desplegar información en pantalla (ya sea imprimir por consola, ventanas o cualquier otro de despliegue de información) o solicitarla. La razón principal de esto es para que, si en el día de mañana vas a cambiar la interfaz de tu sistema(ejemplo, de consola a Ventanas) los cambios que tengas que hacer en las clases del dominio tiendan a ninguno.
Otro consejo no menor, es intentar extraer lógica en métodos para que no quede todo en un método gigante (tampoco irse al otro extremo y tener 2000 métodos con 2 lineas cada uno).
Nuevamente recalco que no hay una receta para seguir, pero con el tiempo vas a irlo viendo
A las ordenes