1
resposta

[Dúvida] Duvida sobre metodos contrutores no projeto ScreamMatch

Eu tenho a seguinte duvida,

criei os metodos contrutores em titulo, filme e series.

em filme eu queria poder passar por parametro o setDuracaoEmMinutos, E o avalia que nao sao metodos ou atributos do Filme.

ainda nao implementei,

mas eu pensei se eu criar um metodo construtor apenas desses dois metodos la na classe deles e eles extendes para filme, vai funcionar ne ?

1 resposta

Olá Deivid! Tudo bem?

Primeiramente, é importante lembrar que um construtor em Java é usado para inicializar objetos da classe com um estado inicial definido. Os construtores não são destinados para incluir métodos como setDuracaoEmMinutos ou avalia, mas sim para inicializar atributos do objeto.

No seu caso, parece que você deseja adicionar funcionalidades específicas (setDuracaoEmMinutos e avalia) que não são atributos diretos da classe Filme. Se essas funcionalidades são parte integral de Filme, você deveria considerar incluí-los como atributos e inicializá-los através do construtor.

Por exemplo, se você quer que Filme tenha uma duração e uma avaliação, você poderia fazer algo assim:

public class Filme {
    private int duracaoEmMinutos;
    private double avaliacao;

    // Construtor de Filme
    public Filme(int duracaoEmMinutos, double avaliacao) {
        this.duracaoEmMinutos = duracaoEmMinutos;
        this.avaliacao = avaliacao;
    }

    // Getters e Setters
    public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }

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

    public double getAvaliacao() {
        return avaliacao;
    }

    public void setAvaliacao(double avaliacao) {
        this.avaliacao = avaliacao;
    }
}

Se setDuracaoEmMinutos e avalia são métodos que pertencem a outras classes e você quer que Filme herde essas funcionalidades, você deve fazer Filme estender essas classes. No entanto, Java não suporta herança múltipla diretamente (uma classe só pode estender uma outra classe), mas você pode usar interfaces ou composição para alcançar funcionalidades semelhantes.

Por exemplo, se setDuracaoEmMinutos está em uma classe Media e avalia em outra classe Avaliavel, você poderia fazer Filme estender Media e implementar uma interface Avaliavel.

public interface Avaliavel {
    void avalia(double avaliacao);
}

public class Media {
    protected int duracaoEmMinutos;

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

public class Filme extends Media implements Avaliavel {
    private double avaliacao;

    @Override
    public void avalia(double avaliacao) {
        this.avaliacao = avaliacao;
    }
}

Lembre-se de que os construtores são principalmente para inicialização de atributos, e a herança/interface deve ser usada para compartilhar funcionalidades entre classes.

Espero que isso ajude a esclarecer como você pode organizar os construtores e a herança em seu projeto.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.