Creación de Menú de Opciones para Doctores en Java
Resumen
¿Cómo estructuramos el menú del doctor en Java?
El desarrollo en Java puede llevarte a crear aplicaciones robustas y escalables. En la programación orientada a objetos, la modulación y reutilización de código son fundamentales para mantener un proyecto eficiente y fácil de gestionar. Aquí exploraremos cómo modularizar y estructurar un menú para el sistema de gestión de un médico, facilitando la administración de sus citas.
¿Cómo creamos una clase para el menú del doctor?
La creación de clases específicas para distintos módulos de una aplicación ayuda a segmentar responsabilidades y mejorar la legibilidad del código. Hacemos lo siguiente:
Crear una clase para el menú del doctor:
En tu proyecto, dentro de la carpeta adecuada, crea una nueva clase llamada UIADoctorMenu.
publicclassUIADoctorMenu{publicvoidshowDoctorMenu(){// Lógica para mostrar el menú del doctorSystem.out.println("Welcome Dr. "+Doctor.name);// Opciones del menú}}
Incorporar lógica de opciones:
Implementa el método showDoctorMenu, que se encargará de desplegar las opciones disponibles para el doctor.
publicvoidshowDoctorMenu(){System.out.println("1. Add Available Appointment");System.out.println("2. My Scheduled Appointments");System.out.println("0. Logout");// Solicitar respuesta del usuario}
¿Cómo manejamos la interacción del usuario?
Para interactuar con el usuario y recibir su selección, utilizamos la clase Scanner para obtener las entradas del usuario y procesarlas según sus respuestas.
Scanner scanner =newScanner(System.in);int response =Integer.parseInt(scanner.nextLine());switch(response){case1:// Lógica para añadir una nueva cita disponiblebreak;case2:// Lógica para mostrar citas agendadasbreak;case0:// Lógica para cerrar sesiónbreak;default:System.out.println("Please select a valid option.");}
¿Cómo agregar una función para citas disponibles?
El método para gestionar las citas disponibles del doctor es clave. Debe dejar claro el flujo de trabajo y cómo el doctor puede establecer su disponibilidad.
Crear un método privado detallado:
Este método manejará exclusivamente la lógica de agregar disponiblidad para citas. Es importante que los nombres de los métodos sean descriptivos.
privatevoidaddAvailableAppointment(){System.out.println("::Add available appointment");System.out.println("Select a Month:");// Mostrar meses disponiblesString[] months ={"January","February","March"};for(int i =0; i < months.length; i++){System.out.println((i +1)+". "+ months[i]);}int monthSelected =Integer.parseInt(scanner.nextLine());// Mostrar confirmaciónif(monthSelected >0&& monthSelected <= months.length){System.out.println("You've selected: "+ months[monthSelected -1]);}}
¿Cómo gestionamos entradas y salidas de usuario?
Interactuar eficazmente con el usuario requiere una comunicación clara. Asegúrate de confirmar acciones y guiar al usuario durante el proceso:
Solicitar confirmación: Una vez que el usuario tome una decisión, pídele que confirme antes de proceder.
System.out.println("Enter the date [dd/MM/yyyy]: ");String date = scanner.nextLine();System.out.println("You entered: "+ date +" Is this correct? Yes(1)/No(2)");int confirmation =Integer.parseInt(scanner.nextLine());if(confirmation ==1){// Almacenar la fecha}else{// Repetir proceso}
¿Por qué evitar abreviaturas?
Evitar abreviaturas mejora la claridad y comprensión del código. Un buen nombre de método/descripción del código puede ser largo, siempre que sea claro y contextual.
Los nombres deben ser expresivos y autodescriptivos.
Abreviar puede complicar la comprensión tanto para otros programadores como para el propio autor con el tiempo.
Un código claro y comprensible es más valioso que uno breve y confuso.
La programación orientada a objetos en Java permite estructurar un proyecto de manera que el código sea mantenible, escalable y fácil de entender. Modularizando por funciones específicas como el menú de un doctor, ordenamos el proyecto y aseguramos una interacción eficiente con el usuario. Continúa expandiendo tus conocimientos para explorar los beneficios completos de Java y el desarrollo de software.
Lo que hecho en falta del curso es ir mostrando el diagrama de clases en UML, a la par que el código de cada lección.
Lo escribo porque hay gente que tiene un estilo de aprendizaje visual, a la que le ayuda a asentar lo aprendido un refuerzo al inicio y/o al final de la clase mediante una imagen general de lo que estamos construyendo.
También sería interesante comprobar mediante la ejecución del programa, en el vídeo, el comportamiento correcto de lo que estamos añadiendo.
El motivo es que en esta y la anterior lección, en las cuales se escribe bastante código, no se ejecutó el programa, y eso puede causar confusión a quienes nos cueste entender qué se logra con lo escrito.
Totalmente de acuerdo!
 la cardinalidad se puede realizar con notación UML, pata de gallo, etc.
Nota: UML es más pensado para los procesos y no tanto para la estructura de datos, pero tanto UML como otras notaciones buscan crear un modelo con entidades que se relacionen entre si.
Maldición, estoy entendiendo java! xD
Pienso que lo mejor hubiese sido primero poder maquetar todos los métodos y así entender la lógica detrás de estos, porque escribir código mientras se piensa no aclara la idea.
En donde tenemos:
Va a imprimir el mes de la posición de monthSelected, no la posición que se mostró anteriormente, mas bien tendría que restarle 1 para que imprima la posición correcta:
🐱💻 Aquí vemos en acción la importancia de la lógica de programación.
Me agrada la forma de dividir el menú de esta forma y de indicar avisos cada vez que se realiza una acción para que el Usuario sienta seguridad de los procesos que hace la aplicación.
Holaa comunidad, creo que es una buena practica siempre cuando se parsea un string a un entero, usar un try catch para captar el error de por ejemplo cuando no se ingresa un número y que muestre un mensaje de que lo que el usuario ingresó no corresponde a un número.
Esta clase se me hizo bastante pesada en comparación con las demás. No sé si fue porque todo iba muy rápido, pero me sentí incómoda en esta sesión.
Buena clase :)
El código esta bien, la verdad Anahi no esta mostrando nada que no haya explicado anteriormente. Lo ideal para aquellos que no entienden es verlo dos veces o más. Ver como los demás hacen código y leer el código de otro es mas de la mitad de la vida de un programador.
Muchas personas de las que se quejan de que va muy rápido, es porque les hace falta el uso de la lógica.
Les recomiendo que practiquen todo lo aprendido hasta ahora, ya que en esta clase usa puro código básico que ya vimos, pero desde una complejidad en su lógica de programación.
Muy buen manejo de los menus
static me dice que se puede invocar el metodo sin instanciar la clase y private le da un scope local a la clase, me parece que es una contradiccion en el metodo showAddAvailableAppointmentMenu. es decir el metodo es local pero puede ser llamado desde afuera de la clase. Alguien me explica si es un error o cual es la ventaja de hacer eso?
Sin haber visto lo que sigue después de esta clase, lo mas seguro es porque ese metodo lo va a llamar sin necesidad de instanciar ninguna clase y lo hace private para que solo lo pueda usar en esa misma clase y no sea llamado desde otra ya que la idea de ese metodo es ser usado solo y solo si se escoge una opción en pantalla... entonces no tiene sentido que sea llamado desde otra clase.
Siento que va demasiado rápido. me ha tocado parar este video demasiadas veces.
Un consejo que puedo darles es que no se apresuren en escribir las variables en inglés, tal cual lo hace la profesora. Sí, es importante aprender y acostumbrarse al idioma y a su uso, pero para que puedan entender mejor aún el uso que le das a tus variables, arrays, clases, métodos, etc.. Una vez puedas entender bien el uso que tienen cada uno y el por qué están allí, adelante avanza con el inglés con toda. (Consejo de principiante a principiante)
I love Java
It is incredible how much I have learned and reinforced since my career thanks to Platzi.
No tiene sentido dar la opción de elegir un mes, si luego se ingresa la fecha manualmente. Esas líneas de código se pueden ahorrar.
Me parece que un tema tan importante no se puede tratar de esa manera, a ese ritmo de velocidad como si todos fuéramos expertos en Java