Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Desafío: construyendo una nueva aplicación

modelos/Audio.java

package modelos;

public class Audio {
    
    private String titulo;
    private int duracion; 
    protected int totalDeReproducciones;
    protected int meGusta;
    private int clasificacion;

    public void meGusta() {
        this.meGusta++;
    }

    public void reproducir() {
        this.totalDeReproducciones++;
    }
    
    // Getters
    public String getTitulo() { return titulo; }
    public int getDuracion() { return duracion; }
    public int getTotalDeReproducciones() { return totalDeReproducciones; }
    public int getMeGusta() { return meGusta; }
    public int getClasificacion() { return clasificacion; }

    // Setters
    public void setTitulo(String titulo) { this.titulo = titulo; }
    public void setDuracion(int duracion) { this.duracion = duracion; }
    public void setClasificacion(int clasificacion) { this.clasificacion = clasificacion; }
}

modelos/Cancion.java

package modelos;

public class Cancion extends Audio {
    private String album;
    private String artista;
    private String genero;

    // Método especializado (para mostrar que la herencia funciona)
    public void mostrarDetalles() {
        System.out.println("Título de la Canción: " + getTitulo());
        System.out.println("Artista: " + artista);
        System.out.println("Reproducciones: " + totalDeReproducciones);
        System.out.println("Me Gusta: " + meGusta);
    }

    // Getters y Setters específicos
    public String getAlbum() { return album; }
    public void setAlbum(String album) { this.album = album; }
    public String getArtista() { return artista; }
    public void setArtista(String artista) { this.artista = artista; }
    public String getGenero() { return genero; }
    public void setGenero(String genero) { this.genero = genero; }
}

modelos/Podcast.java

package modelos;

public class Podcast extends Audio {
    private String host;
    private String descripcion;
    private int numeroEpisodio;

    // Método especializado
    public void mostrarDetalles() {
        System.out.println("Título del Podcast: " + getTitulo());
        System.out.println("Host: " + host);
        System.out.println("Episodio N°: " + numeroEpisodio);
        System.out.println("Reproducciones: " + totalDeReproducciones);
    }

    // Getters y Setters específicos
    public String getHost() { return host; }
    public void setHost(String host) { this.host = host; }
    public String getDescripcion() { return descripcion; }
    public void setDescripcion(String descripcion) { this.descripcion = descripcion; }
    public int getNumeroEpisodio() { return numeroEpisodio; }
    public void setNumeroEpisodio(int numeroEpisodio) { this.numeroEpisodio = numeroEpisodio; }
}

principal/Principal.java

package principal;

import modelos.Cancion;
import modelos.Podcast;
import modelos.Audio;

public class Principal {
    public static void main(String[] args) {
        
        System.out.println("--- PRUEBA DE CANCIÓN ---");
        Cancion miCancion = new Cancion();
        miCancion.setTitulo("Electric Feel");
        miCancion.setArtista("MGMT");
        miCancion.setDuracion(4); 

        // Simular uso:
        for (int i = 0; i < 50; i++) {
            miCancion.reproducir(); 
        }
        miCancion.meGusta();
        miCancion.meGusta();

        miCancion.mostrarDetalles();
        System.out.println("Total de Likes: " + miCancion.getMeGusta());
        System.out.println("-------------------------");


        System.out.println("--- PRUEBA DE PODCAST ---");
        Podcast miPodcast = new Podcast();
        miPodcast.setTitulo("El Futuro del Desarrollo");
        miPodcast.setHost("AluraTech");
        miPodcast.setDuracion(45); 

        // Simular uso:
        for (int i = 0; i < 150; i++) {
            miPodcast.reproducir();
        }
        miPodcast.meGusta();

        miPodcast.mostrarDetalles();
        System.out.println("Total de Reproducciones: " + miPodcast.getTotalDeReproducciones());
    }
}
1 respuesta

¡Hola Mario, espero que estés bien!

Gracias por compartir tu código. Parece que estás trabajando en un proyecto que utiliza la programación orientada a objetos en Java, y estás aplicando conceptos como herencia y encapsulamiento. Tu estructura de clases entre Audio, Cancion y Podcast está bien definida y muestra un buen uso de la herencia.

Si estás buscando mejorar o expandir tu aplicación, aquí hay algunas sugerencias que podrías considerar:

  1. Polimorfismo: Puedes aprovechar el polimorfismo creando una lista de objetos de tipo Audio y almacenando tanto Cancion como Podcast en ella. Luego, podrías iterar sobre esta lista y llamar a métodos comunes como reproducir() o mostrarDetalles(). Esto te permitirá tratar diferentes tipos de Audio de manera uniforme.

    List<Audio> listaDeAudios = new ArrayList<>();
    listaDeAudios.add(miCancion);
    listaDeAudios.add(miPodcast);
    
    for (Audio audio : listaDeAudios) {
        audio.reproducir();
        audio.mostrarDetalles();
    }
    
  2. Abstracción: Podrías considerar hacer que la clase Audio sea abstracta si no tiene sentido crear instancias directas de Audio. Esto reforzará la idea de que Audio es solo una base para Cancion y Podcast.

  3. Interfaz de Usuario: Si deseas hacer tu aplicación más interactiva, podrías implementar una simple interfaz de usuario en consola que permita al usuario seleccionar opciones para reproducir audios, dar "me gusta", etc.

  4. Persistencia de Datos: Si estás interesado en almacenar los datos de tus audios, podrías explorar cómo guardar esta información en archivos o en una base de datos.

Espero que estas sugerencias te sean útiles y te ayuden a seguir mejorando tu aplicación. ¡Sigue adelante con tus estudios y experimenta con nuevas ideas!

Espero haber ayudado y ¡buenos estudios!