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

Não consigo instanciar a classe Curso

Segui os tutoriais mas não estou conseguindo instanciar minha classe curso.

Código da classe de teste:

package br.com.alura.testes;

import br.com.alura.modelos.Aula;
import br.com.alura.modelos.Curso;

public class TestaCurso {
    Curso meuCurso = new Curso("curso de java", "Murilo Spineli");
    meuCurso.adiciona( new Aula("aa", 12) );

}

Código da Classe Curso:

package br.com.alura.modelos;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import br.com.alura.modelos.Aula;

public class Curso {

    private String nome;
    private String instrutor;
    private List<Aula> aulas= new ArrayList<>();
    private int minutosTotais;


    public Curso(String nome, String instrutor) {
        this.nome = nome;
        this.instrutor = instrutor;
    }

    public String getNome() {
        return nome;
    }

    public String getInstrutor() {
        return instrutor;
    }

    public List<Aula> getAulas() {
        return Collections.unmodifiableList(aulas);
    }

    public void adiciona(Aula aula) {
        this.aulas.add(aula);
        this.minutosTotais =+ aula.getTempo();
    }

    public void adiciona(List<Aula> lista) {
        this.aulas.addAll(lista);
        for (Aula aula : lista) {
            this.minutosTotais += aula.getTempo();
        }
    }

    public int getminutosTotais() {
        return this.minutosTotais;

    }
}

Código da classe Aula (usada pela classe Curso):

package br.com.alura.modelos;

public class Aula implements Comparable<Aula>{

    private String titulo;
    private int tempo;

    public Aula(String titulo, int tempo) {
        this.titulo = titulo;
        this.tempo = tempo;
    }
    // nao precisa ter setter pois o construtor faz isso
    public String getTitulo() {
        return titulo;
    }

    public int getTempo() {
        return tempo;
    }

    @Override
    public String toString() {
        return this.titulo;
    }

    @Override
    public boolean equals(Object obj) {
        System.out.println(obj.getClass() + ", "
                + this.getClass());

        if (obj.getClass() != this.getClass()) {
            return false;
        }
        Aula a = (Aula) obj;
        if (this.getTitulo() != a.getTitulo()) {
            return false;
        }
        if (this.getTempo() != a.getTempo()) {
            return false;
        }

        return true;
    }
    @Override
    public int compareTo(Aula a) {//-1 se a>this / 0 se iguais / 1 se this>a
        return this.titulo.compareTo(a.getTitulo());
    }
}

Eu consigo instanciar a classe Aula normalmente, apenas essa que não funciona como esperado. Todas as importações estão corretas, e o eclipse reconhece isso, mas não consegue acessar os métodos da classe curso.

Alguém pode me ajudar nisso?

4 respostas

Olá,

Faltou o código da classe Aula também. Mas de qualquer forma, a classe Curso não está importando a classe Aula, pode ser esse o motivo do erro.

Já corrigi a pergunta, muito obrigado. Mesmo com a importação da classe aula (que por algum motivo o eclipse não pediu pois não haviam erros de compilação) o código ainda não funciona

solução!

Boa tarde, Murilo! Como vai?

Pelo que pude perceber, falta o método main na classe TestaCurso! Faça assim e veja se as coisas funcionam da forma como vc esperava!

public class TestaCurso {

    public static void main(String args[]) {
        Curso meuCurso = new Curso("curso de java", "Murilo Spineli");
        meuCurso.adiciona( new Aula("aa", 12) );
    }

}

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Boa tarde Murilo,

o problema que eu vi foi a falta do método main na classe TestaCurso

exemplo:

package br.com.alura.testes;

import br.com.alura.modelos.Aula;
import br.com.alura.modelos.Curso;

public class TestaCurso {
    public static void main(String[] args) {
        Curso meuCurso = new Curso("curso de java", "Murilo Spineli");
        meuCurso.adiciona(new Aula("aa", 12));
    }

}