Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

duda POO

Realice lo solicitado creando interfaces y clases con el fin de aplicar POO en el codigo de la clase pincipal cusqueda con api ¿ que mejoras se pueden realizar al código ingresado? ¿ las clases implementadas son suficientes?


package com.aluracursos.POO.Principal;

import com.aluracursos.POO.exepcion.ErrorFaltaDuracionEnMinutosExepcion;
import com.aluracursos.POO.modelos.*;

import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ClaseBusquedaPoo {
    public static void main(String[] args) throws IOException, InterruptedException {
        ComunicacionDatosUsuario ingreso = new ComunicacionDatosUsuario();
        ArrayList<Titulo> titulos = new ArrayList<>();
        BusquedaApi  busquedaApi = new BusquedaApi();
        ConversionDatos conversionDatos = new ConversionDatos();
        CrearArchivo archivoJson = new CrearArchivo();
        ingreso.menuInicial();
        while (true){
            ingreso.menu2();
            var opcion = ingreso.leerInt();
            if (opcion == 2){
                break;
            }
            try {
                ingreso.menu1();
                ingreso.limpiarLinea();
                var busqueda = ingreso.leerLinea();
                String datosJson = busquedaApi.buscarPelicula(busqueda);
                System.out.println(datosJson);
                System.out.println(conversionDatos.convertir(datosJson));
                var titulo = conversionDatos.convertir(datosJson);
                titulos.add(titulo);
            } catch (NumberFormatException e){
                System.err.println(e.getMessage());
            } catch (ErrorFaltaDuracionEnMinutosExepcion e){
                System.err.println(e.getMessage());
            }catch (Exception e){
                System.err.println(e.getMessage());
            }
        }
        System.out.println(titulos);
        ingreso.limpiarLinea();
        ingreso.nombreArchivo();
        var nombreArchivo =ingreso.leerLinea();
        archivoJson.crearArchivo(nombreArchivo,conversionDatos.
                convertirAJson(titulos));
        ingreso.cerrar();

    }
}

Quedo atento a sus comentarios

2 respuestas
solución!

¡Hola Juan, espero que estés bien!

Viendo tu código, veo que estás aplicando algunos conceptos de Programación Orientada a Objetos (POO), pero hay algunas mejoras que podrías realizar.

En primer lugar, podrías considerar separar la lógica de la interfaz de usuario de la lógica de negocio, creando clases específicas para cada responsabilidad. Por ejemplo, podrías tener una clase para manejar la interacción con el usuario y otra para la lógica de búsqueda y manipulación de datos.

También podrías considerar el uso de interfaces para definir contratos que las clases deben implementar. Esto te permitirá desacoplar las implementaciones concretas de las interfaces, lo que facilita la extensión y el mantenimiento del código.

En cuanto a las excepciones, es importante manejarlas de manera adecuada. Parece que estás capturando diferentes tipos de excepciones, lo cual es bueno, pero sería útil definir excepciones personalizadas que reflejen situaciones específicas dentro de tu dominio de negocio.

Por último, podrías mejorar la legibilidad y mantenibilidad del código utilizando nombres descriptivos para tus clases, métodos y variables, siguiendo las convenciones de nomenclatura de Java.

Espero que estos comentarios te sean útiles para mejorar tu código. ¡Sigue adelante con tu aprendizaje de POO en Java!

Espero haber ayudado y buenos estudios!

Hola muchas gracias por la respuesta