Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Desafio resolvido

package desafio.arquivo;

public class Veiculo {
    private String placa;
    private String modelo;
    private String cor;
    private int ano;

    public Veiculo(String placa, String modelo, String cor, int ano) {
        this.placa = placa;
        this.modelo = modelo;
        this.cor = cor;
        this.ano = ano;
    }

    public String getPlaca() {
        return placa;
    }

    public String getModelo() {
        return modelo;
    }

    public String getCor() {
        return cor;
    }

    public int getAno() {
        return ano;
    }
}
package br.com.alura.screenmatch.modelos;

import br.com.alura.screenmatch.excecao.ErroDeConversaoDeAnoException;
import com.google.gson.annotations.SerializedName;

public class Titulo implements Comparable<Titulo> {

    private String nome;
    private int anoDeLancamento;
    private boolean incluidoNoPlano;
    private double somaDasAvaliacoes;
    private int totalDeAvaliacoes;
    private int duracaoEmMinutos;

    public Titulo(String nome, int anoDeLancamento) {
        this.nome = nome;
        this.anoDeLancamento = anoDeLancamento;
    }

    public Titulo(TituloOmdb tituloOmdb) {
        this.nome = tituloOmdb.title();
        if(tituloOmdb.year().length() > 4){
            throw new ErroDeConversaoDeAnoException("Não conseguir converter o ano porque tem mais de 4 caracteres.");
        }
        this.anoDeLancamento = Integer.valueOf(tituloOmdb.year());
        this.duracaoEmMinutos = Integer.valueOf(tituloOmdb.runtime().replace(" min", ""));
    }

    public int getTotalDeAvaliacoes(){
        return totalDeAvaliacoes;
    }

    public String getNome() {
        return nome;
    }

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

    public boolean isIncluidoNoPlano() {
        return incluidoNoPlano;
    }

    public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setAnoDeLancamento(int anoDeLancamento) {
        this.anoDeLancamento = anoDeLancamento;
    }

    public void setDuracaoEmMinutos(int duracaoEmMinutos) {
        this.duracaoEmMinutos = duracaoEmMinutos;
    }

    public void exibeFichaTecnica(){
        System.out.println(""" 
                ******************************************************         
                * Nome do filme: %s
                * Ano de lancamento: %d
                ******************************************************
                """.formatted(nome, anoDeLancamento));
    }

    public void avalia(double nota){
        somaDasAvaliacoes += nota;
        totalDeAvaliacoes++;
    }

    public double pegaMedia(){
        return somaDasAvaliacoes / totalDeAvaliacoes;
    }

    @Override
    public int compareTo(Titulo outroTitulo) {
        return this.getNome().compareTo(outroTitulo.getNome());
    }

    @Override
    public String toString() {
        return "{" +
                "nome='" + nome + '\'' +
                ", anoDeLancamento=" + anoDeLancamento +
                ", duracaoEmMinutos=" + duracaoEmMinutos +
                '}';
    }
}
package desafio.arquivo;

import br.com.alura.screenmatch.modelos.Titulo;
import com.google.gson.*;
import java.io.*;

public class Principal {
    public static void main(String[] args) throws IOException {
        /*Crie um programa em Java que escreva a seguinte mensagem em um arquivo chamado "arquivo.txt": "Conteúdo a ser gravado no arquivo." Utilize as classes do pacote java.io.*/
        FileWriter fw = new FileWriter("arquivo.txt");
        fw.write("Conteúdo a ser gravado no arquivo.");
        fw.close();

        /*Defina uma classe chamada Titulo com os atributos necessários. Em seguida, crie um programa que instancia um objeto Titulo, serializa esse objeto para JSON usando a biblioteca Gson e imprime o resultado.*/
        Titulo titulo = new Titulo("Matrix", 2001);
        /*Modifique o programa anterior para que o JSON gerado seja formatado de maneira mais elegante. Utilize o método setPrettyPrinting para alcançar esse resultado.*/
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        System.out.println(gson.toJson(titulo));

        /*Defina uma classe chamada Veiculo com os atributos necessários. Em seguida, crie um programa que instancia um objeto Veiculo, serializa esse objeto para JSON usando a biblioteca Gson e imprime o resultado.*/
        Veiculo veiculo = new Veiculo("AAA-1A80", "FX-100", "Prata", 2026);
        System.out.println(gson.toJson(veiculo));
    }
}

Resultado Esperado:
Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Olá, Aldeny! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de serialização para transformar objetos em JSON com Java, utilizou muito bem o recurso de GsonBuilder para formatar a saída de maneira elegante e ainda compreendeu a importância das classes de entrada e saída para manipulação de arquivos.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

Olá Daniel, tudo bem?

Quero agradecer por estar sempre acompanhando e compartilhando informações e sugestões sobre as atividades e sobre Java. Tenho percebido que essa participação no fórum tem sido muito importante para o meu aprendizado, pois me ajuda a avançar nos desafios com mais confiança e a não me sentir sozinho durante esse processo.

Sua contribuição faz muita diferença. Obrigado pelo apoio!