diff --git a/App.java b/App.java new file mode 100644 index 0000000..e530518 --- /dev/null +++ b/App.java @@ -0,0 +1,10 @@ + +package br.com.ucsal.olimpiadas; + +import br.com.ucsal.olimpiadas.ui.MenuConsole; + +public class App { + public static void main(String[] args) { + new MenuConsole().iniciar(); + } +} diff --git a/Participante.java b/Participante.java new file mode 100644 index 0000000..8770222 --- /dev/null +++ b/Participante.java @@ -0,0 +1,12 @@ + +package br.com.ucsal.olimpiadas.core; + +public class Participante { + private long id; + private String nome; + + public long getId(){return id;} + public void setId(long id){this.id=id;} + public String getNome(){return nome;} + public void setNome(String nome){this.nome=nome;} +} diff --git a/Prova.java b/Prova.java new file mode 100644 index 0000000..011ccb2 --- /dev/null +++ b/Prova.java @@ -0,0 +1,12 @@ + +package br.com.ucsal.olimpiadas.core; + +public class Prova { + private long id; + private String titulo; + + public long getId(){return id;} + public void setId(long id){this.id=id;} + public String getTitulo(){return titulo;} + public void setTitulo(String titulo){this.titulo=titulo;} +} diff --git a/Questao.java b/Questao.java new file mode 100644 index 0000000..f3721f8 --- /dev/null +++ b/Questao.java @@ -0,0 +1,28 @@ + +package br.com.ucsal.olimpiadas.core; + +public class Questao { + private long id; + private long provaId; + private String enunciado; + private String fenInicial; + private String[] alternativas; + private char alternativaCorreta; + + public long getId(){return id;} + public void setId(long id){this.id=id;} + public long getProvaId(){return provaId;} + public void setProvaId(long provaId){this.provaId=provaId;} + public String getEnunciado(){return enunciado;} + public void setEnunciado(String e){this.enunciado=e;} + public String getFenInicial(){return fenInicial;} + public void setFenInicial(String f){this.fenInicial=f;} + public String[] getAlternativas(){return alternativas;} + public void setAlternativas(String[] a){this.alternativas=a;} + public char getAlternativaCorreta(){return alternativaCorreta;} + public void setAlternativaCorreta(char c){this.alternativaCorreta=c;} + + public boolean isRespostaCorreta(char r){ + return alternativaCorreta==r; + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..d174d4f --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +# Refatoração do Sistema Olimpíadas + +Este projeto consiste na refatoração de um sistema legado de aplicação de provas, com foco em melhorar a organização do código, a legibilidade e a manutenção, sem remover as funcionalidades originais. + +## Objetivo + +O objetivo da refatoração foi reorganizar o sistema para que cada classe tivesse uma responsabilidade mais clara, reduzindo a concentração de lógica em um único arquivo e facilitando a compreensão do projeto. + +## Funcionalidades mantidas + +O sistema continua permitindo: + +- cadastro de participantes +- cadastro de provas +- cadastro de questões +- aplicação de provas +- registro das respostas +- cálculo de nota +- listagem de resultados +- impressão do tabuleiro com base em FEN + +## Estrutura do projeto + +### App.java +Classe responsável por iniciar o sistema. + +### MenuConsole.java +Responsável pela interação com o usuário no terminal, exibindo opções do menu e recebendo dados digitados. + +### Sistema.java +Classe principal da lógica do sistema. Controla o cadastro de participantes, provas e questões, a aplicação da prova e a listagem dos resultados. + +### Participante.java +Representa os dados de um participante. + +### Prova.java +Representa os dados de uma prova. + +### Questao.java +Representa uma questão da prova, contendo enunciado, alternativas, resposta correta e posição inicial do tabuleiro em FEN. + +### Resposta.java +Representa a resposta marcada pelo participante em uma questão. + +### Tentativa.java +Representa uma tentativa de realização de uma prova, armazenando as respostas do participante. + +### TabuleiroUtil.java +Classe utilitária responsável por imprimir no console o tabuleiro de xadrez a partir de uma string FEN. + +## O que foi refatorado + +- A classe principal foi simplificada +- A interação com o usuário foi separada em uma classe própria +- A lógica principal do sistema foi organizada em uma classe central +- As entidades foram mantidas apenas como estruturas de dados +- A impressão do tabuleiro foi isolada em uma classe utilitária diff --git a/Resposta.java b/Resposta.java new file mode 100644 index 0000000..48cce18 --- /dev/null +++ b/Resposta.java @@ -0,0 +1,15 @@ + +package br.com.ucsal.olimpiadas.core; + +public class Resposta { + private long questaoId; + private char alternativaMarcada; + private boolean correta; + + public long getQuestaoId(){return questaoId;} + public void setQuestaoId(long id){this.questaoId=id;} + public char getAlternativaMarcada(){return alternativaMarcada;} + public void setAlternativaMarcada(char c){this.alternativaMarcada=c;} + public boolean isCorreta(){return correta;} + public void setCorreta(boolean c){this.correta=c;} +} diff --git a/Tentativa.java b/Tentativa.java new file mode 100644 index 0000000..e6119ed --- /dev/null +++ b/Tentativa.java @@ -0,0 +1,19 @@ + +package br.com.ucsal.olimpiadas.core; + +import java.util.*; + +public class Tentativa { + private long id; + private long participanteId; + private long provaId; + private List respostas = new ArrayList<>(); + + public long getId(){return id;} + public void setId(long id){this.id=id;} + public long getParticipanteId(){return participanteId;} + public void setParticipanteId(long id){this.participanteId=id;} + public long getProvaId(){return provaId;} + public void setProvaId(long id){this.provaId=id;} + public List getRespostas(){return respostas;} +}