From 063e70e1b4bfc0a8f93c0899b2e10b8dbb1e91a8 Mon Sep 17 00:00:00 2001 From: "github-classroom[bot]" <66690702+github-classroom[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2026 21:18:48 +0000 Subject: [PATCH 1/8] Setting up GitHub Classroom Feedback From b591378e2a5bed2d659301419151ed3a093fa670 Mon Sep 17 00:00:00 2001 From: lucasmont-stack Date: Fri, 3 Apr 2026 20:59:24 -0300 Subject: [PATCH 2/8] =?UTF-8?q?Refatora=C3=A7=C3=A3o=20classe=20App.java?= =?UTF-8?q?=20(SOLID)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refatoração: Antes concentrava toda a lógica do sistema Agora apenas inicializa o sistema e delega o fluxo para o menu Melhoria: reduz responsabilidade → segue o princípio SRP --- App.java | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 App.java 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(); + } +} From 1cedda6f584e5b03088b16c6e1825f1bf7d79fd3 Mon Sep 17 00:00:00 2001 From: lucasmont-stack Date: Fri, 3 Apr 2026 21:01:14 -0300 Subject: [PATCH 3/8] =?UTF-8?q?Refatora=C3=A7=C3=A3o=20classe=20Participan?= =?UTF-8?q?te.java=20(SOLID)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refatoração: Mantida como classe de dados (POJO) Removida qualquer lógica desnecessária Melhoria: segue SRP → apenas representa dados --- Participante.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Participante.java 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;} +} From 73865ffb82e34efe62b393ddeeeec64081492511 Mon Sep 17 00:00:00 2001 From: lucasmont-stack Date: Fri, 3 Apr 2026 21:02:42 -0300 Subject: [PATCH 4/8] =?UTF-8?q?Refatora=C3=A7=C3=A3o=20Prova.java=20(SOLID?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refatoração: Mantida como modelo simples Sem responsabilidades além de armazenar dados Melhoria: estrutura mais limpa e clara --- Prova.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Prova.java 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;} +} From 80b3a2b6917bf895cae44d21f708475ae098c895 Mon Sep 17 00:00:00 2001 From: lucasmont-stack Date: Fri, 3 Apr 2026 21:03:56 -0300 Subject: [PATCH 5/8] =?UTF-8?q?Refatora=C3=A7=C3=A3o=20classe=20Questao.ja?= =?UTF-8?q?va=20(SOLID)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refatoração: Organização dos atributos (enunciado, alternativas, FEN) Método de verificação de resposta mantido dentro da própria classe --- Questao.java | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Questao.java 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; + } +} From 9e4d885b86ed01da7975bf92b1b90f3924d4907f Mon Sep 17 00:00:00 2001 From: lucasmont-stack Date: Fri, 3 Apr 2026 21:06:01 -0300 Subject: [PATCH 6/8] =?UTF-8?q?Refatora=C3=A7=C3=A3o=20classe=20Resposta.j?= =?UTF-8?q?ava=20(SOLID)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refatoração: Separada como entidade própria Antes poderia estar implícita ou misturada Melhoria: representação clara de cada resposta --- Resposta.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Resposta.java 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;} +} From d89016bacfd2b41235b6b329b3c2a70047552c1b Mon Sep 17 00:00:00 2001 From: lucasmont-stack Date: Fri, 3 Apr 2026 21:07:21 -0300 Subject: [PATCH 7/8] =?UTF-8?q?Refatora=C3=A7=C3=A3o=20classe=20Tentativa.?= =?UTF-8?q?java=20(SOLID)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refatoração: Responsável apenas por armazenar as respostas de uma prova Não contém lógica de cálculo Melhoria: separa dados da lógica → facilita reutilização --- Tentativa.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Tentativa.java 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;} +} From de267eb62646504606800a0cf1840e1e5b5d2040 Mon Sep 17 00:00:00 2001 From: lucasmont-stack Date: Fri, 3 Apr 2026 21:08:03 -0300 Subject: [PATCH 8/8] Add README for Olympics system refactoring Document the refactoring of the legacy Olympics system, outlining objectives, maintained functionalities, project structure, and changes made. --- README.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 README.md 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