Olá pessoal, venho compartilhar o meu projeto feito como um desafio proposto pela Alura em criar uma nova aplicação. Baseado nos conteúdos estudados tentei aplicar tudo que aprendi ao longo desse curso introdutório de Java POO.
O Projeto ficou estruturado assim:
src
└── br.com.alura.javabeat
├── app
│ └── Principal
└── domain
├── Audio
├── Classification
├── Music
└── Podcast
- Criei uma SuperClasse chamada Audio.
package br.com.alura.javabeat.domain;
public class Audio {
private String title;
private int durationInMinutes;
protected int totalPlayback;
private int likes;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getDurationInMinutes() {
return durationInMinutes;
}
public void setDurationInMinutes(int durationInMinutes) {
this.durationInMinutes = durationInMinutes;
}
public int getLikes() {
return likes;
}
public int getTotalPlayback() {
return totalPlayback;
}
public void giveLike(int num) {
this.likes += num;
}
public void play(int num) {
this.totalPlayback += num;
System.out.println("Reproduzindo Som..");
}
}
- Criei a interface Classificação
package br.com.alura.javabeat.domain;
public interface Classification {
void getClassification();
void getTotalDuration();
}
E então as Heranças, sendo o Podcast e Music.
- Podcast
package br.com.alura.javabeat.domain;
public class Podcast extends Audio implements Classification {
@Override
public void play(int num) {
this.totalPlayback += num;
System.out.println("Reproduzindo podcast..");
}
@Override
public void getClassification() {
if (getLikes() >= 500 || getTotalPlayback() >= 1000) {
System.out.println("O conteúdo está bombando!");
} else if (getLikes() < 300 || getTotalPlayback() < 700) {
System.out.println("O conteúdo está em destaque!");
} else if (getLikes() <= 100 || getTotalPlayback() <= 300) {
System.out.println("O conteúdo está sendo conhecido!");
} else {
System.out.println("O conteúdo não atingiu grandes expectativas.");
}
}
@Override
public void getTotalDuration() {
int total = getTotalPlayback() * getDurationInMinutes();
System.out.println("Tempo total de escuta: " + total + " minutos ");
}
}
- Music
package br.com.alura.javabeat.domain;
public class Music extends Audio implements Classification {
@Override
public void play(int num) {
this.totalPlayback += num;
System.out.println("Reproduzindo música..");
}
@Override
public void getClassification() {
if (getTotalPlayback() >= 5000 || getLikes() >= 800) {
System.out.println("A música virou trend!");
} else if (getTotalPlayback() < 5000 || getLikes() < 800) {
System.out.println("A música ficou viral!");
} else if (getTotalPlayback() <= 3000 || getLikes() <= 500) {
System.out.println("A música é popular!");
} else {
System.out.println("A música não atingiu grandes expectativas.");
}
}
@Override
public void getTotalDuration() {
int total = getDurationInMinutes() * getTotalPlayback();
System.out.println("Tempo total de exibição: " + total + " minutos ");
}
}
Por último a execução da Aplicação
package br.com.alura.javabeat.app;
import br.com.alura.javabeat.domain.Music;
import br.com.alura.javabeat.domain.Podcast;
public class Principal {
public static void main(String[] args) {
Podcast alura = new Podcast();
alura.giveLike(389);
alura.setTitle("Aluracast");
alura.setDurationInMinutes(42);
alura.giveLike(80);
alura.play(124);
// Testes
alura.getClassification();
alura.getTotalDuration();
System.out.println("=".repeat(42));
Music anita = new Music();
anita.setTitle("Show das Poderosas");
anita.setDurationInMinutes(3);
anita.giveLike(1200);
anita.play(3800);
// Testes
anita.getClassification();
anita.getTotalDuration();
}
}
Agora que terminei a minha resolução, irei acompanhar os vídeos finais para ver se deixei alguma parte faltando ou a complementar.
Bons estudos pessoal!
Acompanhe o desenvolvimento!
- Link do projeto: https://github.com/D4nN3t0/JavaBeat