En esta oportunidad iniciamos con el uso de métodos en las Clases. En los ejemplos de
programas anteriores sólo se había usado el método main(). El método main()
como se comentó en los primeros ejemplos, es un método obligatorio en todo
programa Java que se ejecute en modo Consola o Escritorio.
Un método en una clase permite realizar alguna operación que
requiera el programa. Los métodos ayudan a organizar mejor el comportamiento de
una clase. Si revisamos el programa del ejemplo anterior publicado en el post Controlde flujo: do while (6/6), nos damos cuenta que el método main() realiza todo el trabajo de la
clase SaludoApp7. En programación esto no es considerado una buena práctica, si
sólo un método realiza todas las tareas de un programa o clase, el método se
encuentra recargado lo que puede generar los siguientes problemas:
- El método es difícil de entender.
- El método es difícil de modificar o extender.
- El método es complejo y dificulta la tarea de encontrar y corregir defectos o bugs.
- El método no se podrá reutilizar.
- El método es difícil de entender.
- El método es difícil de modificar o extender.
- El método es complejo y dificulta la tarea de encontrar y corregir defectos o bugs.
- El método no se podrá reutilizar.
Por tanto, se debe tener siempre presente a la hora de programar de no tener métodos muy extensos o recargados de mucha funcionalidad o lógica. A los métodos que incumplen este principio se les suele llamar código espagueti, y suelen tener mucha lógica entre mezclada dificultando su comprensión y modificación.
Para mejorar la clase SaludoApp7, se ha creado una nueva versión llamado SaludoApp8. En esta versión se han creado diferentes métodos que permiten dividir la responsabilidad del método main().
La siguiente figura muestra el diseño de la clase SaludoApp8, es una representación gráfica de la clase y está basado en la notación estándar de UML (Lenguaje Unificado de Modelado).
package sistemajava; import java.util.Scanner; public class SaludoApp8 { public static void main(String[] args) { mostrarMenu(); seleccionarOpcionDeMenu(); } private static void mostrarMenu() { System.out.println("¡Hola Mundo...! Bienvenidos a www.sistemajava.com \n"); System.out.println("\t TEMAS QUE PUEDES APRENDER"); System.out.println("\t ========================="); System.out.println("\t 1. Fundamentos de programación (nivel básico)"); System.out.println("\t 2. Técnicas de programación orientada a objetos (nivel intermedio)"); System.out.println("\t 3. Desarrollo de aplicaciones empresariales (nivel avanzado)"); System.out.println("\t ========================="); System.out.println("\t 4. Salir"); } private static void seleccionarOpcionDeMenu() { Scanner entrada = new Scanner(System.in); int opcion, numero_errores = 0; do{ System.out.print("Ingrese el número de opción del menú: "); opcion = entrada.nextInt(); switch(opcion){ case 1: mostrarOpcionNivelBasico(); break; case 2: mostrarOpcionNivelIntermedio(); break; case 3: mostrarOpcionNivelAvanzado(); break; case 4: break; default: numero_errores++; System.out.println("No ingresaste una opción del menú"); } System.out.println(); // salto de línea }while(opcion != 4 && numero_errores < 3); System.out.println("Gracias por su visita."); } private static void mostrarOpcionNivelAvanzado() { System.out.println("Aprenderás los siguientes temas:"); System.out.println("\t 3.1 Implementación de patrones de diseño"); System.out.println("\t 3.2 Tecnología Web: JSP, Servlets, JSF, Servicios Web"); System.out.println("\t 3.3 Frameworks, etc."); } private static void mostrarOpcionNivelIntermedio() { System.out.println("Aprenderás los siguientes temas:"); System.out.println("\t 2.1 Clases y relaciones"); System.out.println("\t 2.2 Tecnología Swing"); System.out.println("\t 2.3 Aplicar principios de diseño, etc."); } private static void mostrarOpcionNivelBasico() { System.out.println("Aprenderás los siguientes temas:"); System.out.println("\t 1.1 Tipos de datos"); System.out.println("\t 1.2 Control de flujo"); System.out.println("\t 1.3 Arreglos, etc."); } }
En el programa se puede apreciar que el método main() ahora invoca a dos métodos: mostrarMenu()
y seleccionarOpcionDeMenu(). Por otra
parte, el método seleccionarOpcionDeMenu()
invoca a otros métodos: mostrarOpcionNivelBasico(),
mostrarOpcionNivelIntermedio() y mostrarOpcionNivelAvanzado(). En este
caso, ahora cada método cumple una tarea específica lo que permite un fácil entendimiento
y fácil modificación.
Por
otra parte, si revisamos la forma de cómo se declaran los métodos podemos
darnos cuenta que tienen una estructura. Por ejemplo en el método:
private
static void mostrarMenu() {
// contenido del método
}
La palabra reservada “private” indica que el
método sólo puede ser usado o invocado por la clase SaludoApp8.
La palabra reservada “static” indica que el
método puede ser invocado desde otro método static como el método main(). La palabra reservada “void”
indica que el método no retorna ningún valor. El nombre mostrarMenu()
es el nombre del método y termina con paréntesis. Dentro de los paréntesis también
pueden existir datos, estos representan los parámetros del método, que son los
datos de entrada que puede necesitar el método. Para este ejemplo los métodos
no necesitan de datos de entrada por lo tanto no tienen parámetros.
Gracias por visitar este blog.
Comentarios
Publicar un comentario
Gracias por tus comentarios