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

Principal.java

package com.aluracursos.radioalura.principal;

import com.aluracursos.radioalura.modelos.Cancion;
import com.aluracursos.radioalura.modelos.Podcast;
import com.aluracursos.radioalura.modelos.MisFavoritos;

public class Principal {

    public static void main(String[] args) {

        Cancion miCancion = new Cancion();
        miCancion.setTitulo("Forever");
        miCancion.setCantante("Kiss");
        miCancion.setAlbum("Hot in the Shade");
        miCancion.setGenero("Rock");

        for (int i = 0; i < 2000; i++) {
            miCancion.reproduce();
        }

        for (int i = 0; i < 15000; i++) {
            miCancion.meGusta();
        }

        System.out.println("Reproducciones canción: "
                + miCancion.getTotalReproducciones());
        System.out.println("Me gusta canción: "
                + miCancion.getTotalMeGusta());


        Podcast miPodcast = new Podcast();
        miPodcast.setTitulo("Café.Tech");
        miPodcast.setPresentador("Gabriela");
        miPodcast.setDescripcion("Podcast sobre tecnología");

        for (int i = 0; i < 8000; i++) {
            miPodcast.reproduce();
        }

        for (int i = 0; i < 100; i++) {
            miPodcast.meGusta();
        }

        System.out.println("Reproducciones podcast: "
                + miPodcast.getTotalReproducciones());
        System.out.println("Me gusta podcast: "
                + miPodcast.getTotalMeGusta());


        MisFavoritos favoritos = new MisFavoritos();
        favoritos.adiciona(miCancion);
        favoritos.adiciona(miPodcast);
    }
}

Audio.java

package com.aluracursos.radioalura.modelos;

public class Audio {

    private String titulo;
    private int duracion;
    private int totalReproducciones;
    private int totalMeGusta;
    private int clasificacion;

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

    public void reproduce() {
        this.totalReproducciones++;
    }

    public int getClasificacion() {
        return clasificacion;
    }

    // Getters y Setters

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public int getDuracion() {
        return duracion;
    }

    public void setDuracion(int duracion) {
        this.duracion = duracion;
    }

    public int getTotalReproducciones() {
        return totalReproducciones;
    }

    public int getTotalMeGusta() {
        return totalMeGusta;
    }

    public void setClasificacion(int clasificacion) {
        this.clasificacion = clasificacion;
    }
}

Cancion.java

package com.aluracursos.radioalura.modelos;

public class Cancion extends Audio {

    private String album;
    private String cantante;
    private String genero;

    @Override
    public int getClasificacion() {
        if (getTotalMeGusta() > 5000) {
            return 8;
        } else {
            return 4;
        }
    }

    // Getters y Setters

    public String getAlbum() {
        return album;
    }

    public void setAlbum(String album) {
        this.album = album;
    }

    public String getCantante() {
        return cantante;
    }

    public void setCantante(String cantante) {
        this.cantante = cantante;
    }

    public String getGenero() {
        return genero;
    }

    public void setGenero(String genero) {
        this.genero = genero;
    }
}

MisFavoritos.java

package com.aluracursos.radioalura.modelos;

public class MisFavoritos {

    public void adiciona(Audio audio) {
        if (audio.getClasificacion() >= 8) {
            System.out.println(audio.getTitulo() +
                    " es uno de los favoritos del momento");
        } else {
            System.out.println(audio.getTitulo() +
                    " también fue añadido a tus favoritos");
        }
    }
}

Podcast.java

package com.aluracursos.radioalura.modelos;

public class Podcast extends Audio {

    private String presentador;
    private String descripcion;

    @Override
    public int getClasificacion() {
        if (getTotalReproducciones() >= 2000) {
            return 9;
        } else {
            return 2;
        }
    }

    // Getters y Setters

    public String getPresentador() {
        return presentador;
    }

    public void setPresentador(String presentador) {
        this.presentador = presentador;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
}
1 respuesta

Hola, ¿cómo estás?

Veo que estás trabajando en un proyecto que utiliza conceptos de programación orientada a objetos como herencia y polimorfismo. Tu código parece estar bien estructurado y estás utilizando correctamente las clases y la herencia para modelar canciones y podcasts.

Una cosa que podrías considerar es cómo estás calculando la clasificación en las clases Cancion y Podcast. Actualmente, la clasificación de una canción se basa en la cantidad de "me gusta", mientras que la de un podcast se basa en las reproducciones. Esto es un buen ejemplo de polimorfismo, ya que ambos métodos getClasificacion se comportan de manera diferente según el tipo de objeto.

Si estás buscando expandir o modificar tu aplicación, podrías intentar agregar más tipos de medios o cambiar los criterios de clasificación para que sean más complejos o realistas. Por ejemplo, podrías considerar tanto los "me gusta" como las reproducciones para determinar la clasificación, o incluso introducir un nuevo atributo como "comentarios" o "calificaciones de usuarios".

Además, si deseas practicar más con el encapsulamiento, podrías revisar si todos los métodos y atributos que has definido realmente necesitan ser públicos, o si algunos podrían ser protegidos o privados para mejorar la seguridad y la integridad de tus datos.

Espero que estas ideas te sean útiles y te ayuden a seguir desarrollando tus habilidades en programación orientada a objetos. ¡Espero haber ayudado y buenos estudios!