2
respostas

[Projeto] Projeto de Conclusão

Abaixo consta minha resolução para o projeto, adicionei também uma classe para Audio Livro

Classe Mãe Audio

package Projeto_POO.br.com.warelime.modelo;

public class Audio {

    private String titulo;
    private double duracao;
    private int totalLikes;
    private int totalAvaliacoes;
    private double classificacao;
    private int acessos;


    public String getTitulo() {
        return titulo;
    }

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

    public double getDuracao() {
        return duracao;
    }

    public void setDuracao(double duracao) {
        this.duracao = duracao;
    }

    public int getTotalLikes() {
        return totalLikes;
    }

    public int getTotalAvaliacoes() {
        return totalAvaliacoes;
    }

    public double getClassificacao() {
        return classificacao;
    }

    public int getAcessos() {
        return acessos;
    }

    public void like() {
        totalLikes++;
    }

    public void acessar() {
        acessos++;
    }
}

Classe Filha Musica

package Projeto_POO.br.com.warelime.modelo;

public class Musica extends Audio {

    private String albulm;
    private String artista;
    private String genero;

    public void informacoes() {
        System.out.println("Titulo: " + getTitulo());
        System.out.println("Artista: " + getArtista());
        System.out.println("Duração: " + getDuracaoFormatado());
        System.out.println("Albulm: " + getAlbulm());
        System.out.println("Genero: " + getGenero());
    }

    public String getAlbulm() {
        return albulm;
    }

    public void setAlbulm(String albulm) {
        this.albulm = albulm;
    }

    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;
    }

    public void setDuracao(double duracao) {
        super.setDuracao(duracao);
    }

    public String getDuracaoFormatado() {

        double duracao = getDuracao();
        int minutos = (int) (duracao / 60);
        int segundos = (int) (duracao % 60);

        return String.format("%02d:%02d", minutos, segundos);
    }

    @Override
    public double getClassificacao() {

        if (getTotalLikes() > 1000) {
            return 5;
        } else if (getTotalLikes() > 500) {
            return 4.5;
        } else if (getTotalLikes() > 200) {
            return 4;
        } else if (getTotalLikes() > 100) {
            return 3.5;
        } else if (getTotalLikes() > 50) {
            return 3;
        } else if (getTotalLikes() > 20) {
            return 2.5;
        } else if (getTotalLikes() > 10) {
            return 2;
        } else if (getTotalLikes() > 5) {
            return 1.5;
        } else if (getTotalLikes() > 2) {
            return 1;
        } else {
            return 0;
        }
    }
}

Classe Filha Podcast

package Projeto_POO.br.com.warelime.modelo;

public class Podcast extends Audio{

    private String apressentador;
    private String descricao;

    public void informacoes() {
        System.out.println("Podcast: " + getTitulo());
        System.out.println("Apresentador: " + getApressentador());
        System.out.println("Descrição: " + getDescricao());
        System.out.println("Duração Média por episódio: " + getDuracao() + " minutos");
    }

    public String getApressentador() {
        return apressentador;
    }

    public void setApressentador(String apressentador) {
        this.apressentador = apressentador;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    @Override
    public double getClassificacao() {

        if (getTotalLikes() > 350) {
            return 5;
        } else if (getTotalLikes() > 200) {
            return 4.5;
        } else if (getTotalLikes() > 100) {
            return 4;
        } else if (getTotalLikes() > 50) {
            return 3.5;
        } else if (getTotalLikes() > 20) {
            return 3;
        } else if (getTotalLikes() > 10) {
            return 2.5;
        } else if (getTotalLikes() > 5) {
            return 2;
        } else if (getTotalLikes() > 2) {
            return 1.5;
        } else if (getTotalLikes() > 0) {
            return 1;
        } else {
            return 0;
        }
    }
}
2 respostas

Continuando

Classe Filha AudioLivro

package Projeto_POO.br.com.warelime.modelo;

public class AudioLivro extends Audio {

    private String autor;
    private String narrador;

    public void informacoes() {
        System.out.println("Título: " + getTitulo());
        System.out.println("Autor: " + autor);
        System.out.println("Narrador: " + narrador);
        System.out.println("Duração: " + getDuracaoFormatado());
    }

    public String getAutor() {
        return autor;
    }

    public String getNarrador() {
        return narrador;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public void setNarrador(String narrador) {
        this.narrador = narrador;
    }

    @Override
    public void setDuracao(double duracao) {
        super.setDuracao(duracao);
    }

    public String getDuracaoFormatado() {

        double duracao = getDuracao();
        int horas = (int) duracao;
        int minutos = (int) ((duracao - horas) * 60);

        return String.format("%02dh%02dm", horas, minutos);
    }

    @Override
    public double getClassificacao() {

        if (getTotalLikes() > 500) {
            return 5;
        } else if (getTotalLikes() > 200) {
            return 4.5;
        } else if (getTotalLikes() > 100) {
            return 4;
        } else if (getTotalLikes() > 50) {
            return 3.5;
        } else if (getTotalLikes() > 20) {
            return 3;
        } else if (getTotalLikes() > 10) {
            return 2.5;
        } else if (getTotalLikes() > 5) {
            return 2;
        } else if (getTotalLikes() > 2) {
            return 1.5;
        } else if (getTotalLikes() > 0) {
            return 1;
        } else {
            return 0;
        }
    }
}

Classe Badaladas

package Projeto_POO.br.com.warelime.modelo;

public class Badaladas {

    public void inclui (Audio audio) {

        if (audio.getClassificacao() >= 4) {
            System.out.println(audio.getTitulo() + " è considerado um sucesso!");
        } else {
            System.out.println(audio.getTitulo() + " também merece ser ouvido!");
        }
    }
}

Main

package Projeto_POO.br.com.warelime.main;

import Projeto_POO.br.com.warelime.modelo.*;

public class Main {
    public static void main(String[] args) {

        Musica musica = new Musica();
        musica.setTitulo("Se Eu Quiser");
        musica.setAlbulm("Sal Grosso");
        musica.setDuracao(206); // Deixando valor em segundos, pois a classe de Musica está setada para converter para minutos e segundos
        musica.setGenero("Rock");
        musica.setArtista("Supercombo");

        for (int i = 0; i < 1100; i++) {
            musica.acessar();
        }

        for (int i = 0; i < 1002; i++) {
            musica.like();
        }

        Podcast podcast = new Podcast();
        podcast.setTitulo("Medo e Delírio em Brasíilia");
        podcast.setApressentador("Cristiano Botafogo");
        podcast.setDuracao(50); // Aplicação simples
        podcast.setDescricao("Podcast sobre política e cultura");

        for (int i = 0; i < 500; i++) {
            podcast.acessar();
        }

        for (int i = 0; i < 200; i++) {
            podcast.like();
        }

        AudioLivro audioLivro = new AudioLivro();
        audioLivro.setTitulo("Senhor dos Anéis - O Retorno do Rei");
        audioLivro.setAutor("J. R. R. Tolkien");
        audioLivro.setDuracao(22.5); // Neste caso temos uma aplicação diferente como demonstração, aceitando o valor direto em horas.
        audioLivro.setNarrador("Mauro Ramos");

        for (int i = 0; i < 200; i++) {
            audioLivro.acessar();
        }

        // Neste caso não vai atingir o valor para ser considerado badalado, mas é apenas exemplo, jamais isso seria realidade quando se trata de Senhor dos Anéis.
        for (int i = 0; i < 100; i++) {
            audioLivro.like();
        }

        musica.informacoes();
        System.out.println("************************");
        podcast.informacoes();
        System.out.println("************************");
        audioLivro.informacoes();
        System.out.println("************************");

        Badaladas badaladas = new Badaladas();
        badaladas.inclui(musica);
        badaladas.inclui(podcast);
        badaladas.inclui(audioLivro);
    }
}

Oi Gabriel,

Parabéns pelo desenvolvimento do seu projeto! 💪

A estrutura das classes Audio, Musica, Podcast e AudioLivro ficou muito boa.

Você aplicou os conceitos de herança de forma clara e organizada.

🎓 Para saber mais: Entendendo Classes Abstratas em Java.

Continue praticando e explorando a Orientação a Objetos! 📚