Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Ajuda - Trabalho da Faculdade

Olá pessoal, tudo bem?

Gostaria de uma grande ajuda com um trabalho de Java na faculdade. Deve ser uma coisa bem simples, mas está me confundindo e impedindo que eu prossiga com as outras questões deste trabalho. Vou explicar tudo.

Seguinte, o trabalho pede pra criar um programa de prova escolar, então tenho as seguintes classes:

A classe "Questão":

package ClassesAD1;

class Questao {
    private String enunciado;

    public Questao(String enunciado) {
        this.enunciado = enunciado;
    }

    public String getEnunciado(){
        return this.enunciado;
    }

}

A Classe "Discursiva":

package ClassesAD1;

class Discursiva extends Questao {
    private String gabarito;

    public Discursiva(String enunciado, String gabarito){
        super(enunciado);
        this.gabarito = gabarito;
    }

    public String getGabarito() {
        return this.gabarito;
    }

    public String toString() {
        return this.getEnunciado() + "\n";
    }

}

E o main:

package ClassesAD1;

public class AD1_2017_2 {
    public static void main(String[] args){
        Questao[] prova = new Questao[2];
        prova[0] = new Discursiva("Qual é o número da última versão de Java?","8");

        ItemVerdadeiroFalso[] itens = new ItemVerdadeiroFalso[3];
        itens[0] = new ItemVerdadeiroFalso("Java foi lançado há mais de 20 anos atrás", true);
        itens[1] = new ItemVerdadeiroFalso("OO surgiu com a linguagem Java", false);
        itens[2] = new ItemVerdadeiroFalso("Eclipse é um editor de texto multilinguagem", true);

        prova[1] = new VerdadeiroFalso(itens);

        int num = 1;
        for (Questao q: prova) {
            System.out.print(num + ") ");
            System.out.print(q); //Chamada do método toString() para cada questão q
            num++;

        }
    }
}

O enunciado diz o seguinte:

Após implementada, para os objetos criados na main(), esta aplicação deve ter a
seguinte saída:


1) Qual é o número da última versão de Java?
2) Assinale verdadeiro ou falso para os itens:
( ) Java foi lançada há mais de 20 anos atrás
( ) OO surgiu com a linguagem Java
( ) Eclipse é um editor de texto multilinguagem


a) Implemente as classes ItemVerdadeiroFalso e VerdadeiroFalso usadas na main().
Observe os valores passados na construção dos objetos para inferir sua estrutura.

b) Implemente uma classe chamada Prova, de forma a incorporar a construção dos
objetos criados diretamente na main(). Na construção do objeto Prova é
informado quantas questões esta possuirá.

c) Nesta classe Prova criada, implemente um método de impressão de forma a
incorporar a impressão anterior feita diretamente na main().

d) Reescreva a main criando uma instância da classe Prova e chame o método de
impressão criado.

Eu consegui criar a classe ItemVerdadeiroFalso corretamente (eu acho). Minha dificuldade agora é criar a classe VerdadeiroFalso, que não faço a mínima ideia como faze-la, pois ela passa como parâmetro uma array de ItemVerdadeiroFalso.

As outras questões acho tenho capacidade de criar, essa daí está difícil.

Já fiz várias tentativas de códigos no Eclipse e nunca dá certo.

Alguém pode me ajudar? Desde já agradeço!!!!! Grande abraço.

10 respostas

Eduardo fiquei confuso... Oque você quer fazer no seu trabalho?

Bom dia, Alisson. Então, rapaz, eu recebi da professora as classes Questao, Discursiva e o main(). Logo depois vem as perguntas ("A, B, C e D").

Na questão A, ela pede para observar no main() as classes "ItemVerdadeiroFalso" e "VerdadeiroFalso". A classe ItemVerdadeiroFalso eu consegui criar.

Mas não estou conseguindo criar a classe "VerdadeiroFalso". Não sei os atributos que usar e o construtor, visto que ela recebe como parâmetro uma array de "ItemVerdadeiroFalso".

Acredito que a classe "VerdadeiroFalso" tenha que passar a pergunta ( " 2)Assinale verdadeiro ou falso para os itens ") para a classe "Questao" como super(), igual acontece na classe "Discursivo", e a resposta dessa pergunta ficar na classe "VerdadeiroFalso". Mas não sei como fazer isso, pois ela recebe uma array.

Consegui explicar??? Talvez não, pois esse trabalho tá confuso kkkk

Obrigado desde já!

kkkk Eduardo confuso mesmo, tem como enviar por email o trabalho? Te envio por la dai kk, mais manda como ela mesmo mando kkkk.

Vou mandar o PDF pro seu e-mail.

Meu e-mail é eduardo_figueiredo@id.uff.br, se cair um PDF lá, sou eu.

Abraços!

Olá Eduardo,

é isso mesmo que você já começou a fazer. Você precisa criar uma classe VerdadeiroFalso que receba o vetor de ItemVerdadeiroFalso no construtor e que no método ToString() imprima cada um dos itens desse vetor em uma linha.

Esse array vai ser um atributo como outro qualquer nessa sua classe, por exemplo: ItemVerdadeiroFalso[] arrayDeItens; que será inicializado no construtor.

Qualquer outra dúvida, manda aqui!

Boa noite, Alessandro. Tudo bem??

Rapaz, eu sou novato, muito novato nesse negocio de OO e pra ajudar, faço faculdade à distância e nas vídeo aulas o professor não ensinou muito isso. Então estou com dificuldade de terminar esse trabalho.

Enfim, minha dúvida é, eu fiz o seguinte código e depois travei, não sei mais o que fazer:

package ClassesAD1;

class VerdadeiroFalso extends Questao {

    public ItemVerdadeiroFalso[] questoes;

    public VerdadeiroFalso(ItemVerdadeiroFalso[] itens){

    }    
}

E agora, o que eu faço? O que eu passo como parâmetro em "super()"?

E onde eu guardo a resposta da pergunta???

Vocês estão melhores que meus professores da faculdade kk, obrigado!

Alessandro Palmeira, não tô conseguindo :/

solução

Vamos com calma, Eduardo :)

E onde eu guardo a resposta da pergunta???

Então, você já tem a resposta guardada em cada um dos itens. O objeto VerdadeiroFalso não contém nenhuma pergunta específica, mas sim, a lista de todos os ItensVerdadeiroFalso e não precisa de guardar uma resposta adicional.

E agora, o que eu faço? O que eu passo como parâmetro em "super()"?

No caso, como VerdadeiroFalso está herdando de Questao, então vamos precisar de um enunciado para ele. Vendo a saída esperada, me parece que o enunciado de uma questão VerdadeiroFalso é sempre Assinale verdadeiro ou falso para os itens: Assim, você vai precisar chamar o super com esse enunciado. Além disso, vai precisar pegar os itens recebidos como parâmetro do construtor e colocar no seu atributo questoes.

Por fim, você vai precisar sobrescrever o método ToString pra ele imprimir uma linha para cada item guardado.

Dá mais uma olhada nesses pontos e vai avisando o quê conseguiu ou se travou em alguma coisa! Abraços!

Ahhhhhhhh, caraca, agora entendi essa questão. No fórum da faculdade ninguém conseguiu me explicar.

Então vou passar como "super()" O assinale verdadeiro ou falso...

O "toString()" vou ter que fazer um loop pra rodar por todos os itens e imprimir na tela. Agora entendi essa questão.

Muito obrigado Alessandro Palmeira, salvou minha vida!

Acho que no final vai ficar super("Assinale verdadeiro ou falso para os itens:".

Fico feliz de ter ajudado :)

Abraços!