Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions App.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
12 changes: 12 additions & 0 deletions Participante.java
Original file line number Diff line number Diff line change
@@ -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;}
}
12 changes: 12 additions & 0 deletions Prova.java
Original file line number Diff line number Diff line change
@@ -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;}
}
28 changes: 28 additions & 0 deletions Questao.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
57 changes: 57 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -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
15 changes: 15 additions & 0 deletions Resposta.java
Original file line number Diff line number Diff line change
@@ -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;}
}
19 changes: 19 additions & 0 deletions Tentativa.java
Original file line number Diff line number Diff line change
@@ -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<Resposta> 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<Resposta> getRespostas(){return respostas;}
}