Prévia do material em texto
UNIVERSIDADE LUEJI A'NKONDE – ULAN
◊ Lunda Norte ◊ Lunda Sul ◊
Instituto Politécnico de Saurimo
Departamento de Ensino e Investigação de Engenharia
==================================================
Tema: Desenvolvimento de Game Quiz
Este relatório descreve o desenvolvimento de Um jogo Na cadeira de Programação 4
Autor:
Dedaldino Samu Kikas Sachizembo
Orientador:
________________________
Mest. Euclides Gaspar
==================================================
Saurimo, janeiro de 2026
UNIVERSIDADE LUEJI A'NKONDE – ULAN
◊ Lunda Norte ◊ Lunda Sul ◊
Instituto Politécnico de Saurimo
Departamento de Ensino e Investigação de Engenharia
==================================================
Tema: Desenvolvimento de Game Quiz
Este relatório descreve o desenvolvimento de Um jogo Na cadeira de Programação 4
Autor:
Dedaldino Samu Kicas Sachizembo
==================================================
Saurimo, janeiro de 2026
Sumário
3.1 Programação Orientada a Objetos (POO) ............................................................................................. 7
3.1.1 Encapsulamento ............................................................................................................................. 7
3.1.2 Herança .......................................................................................................................................... 7
3.1.3 Polimorfismo ................................................................................................................................. 7
3.1.4 Abstração ....................................................................................................................................... 7
3.2 Linguagem Java ................................................................................................................................ 7
3.3 Java Swing ........................................................................................................................................ 8
4. Metodologia ............................................................................................................................................ 8
4.1 Ferramentas Utilizadas...................................................................................................................... 8
4.2 Processo de Desenvolvimento .......................................................................................................... 8
5. Descrição do Sistema .............................................................................................................................. 9
5.1 Visão Geral ....................................................................................................................................... 9
5.2 Regras do Jogo .................................................................................................................................. 9
5.3 Classificação de Desempenho ........................................................................................................... 9
6. Arquitetura e Estrutura do Projeto .......................................................................................................... 9
6.1 Estrutura de Diretórios .................................................................................................................... 10
6.2 Diagrama de Classes ....................................................................................................................... 10
7. Implementação ...................................................................................................................................... 12
7.1 Classe Question ............................................................................................................................... 12
7.2 Classe QuestionDatabase ................................................................................................................ 13
7.3 Classe QuizGame ............................................................................................................................ 14
7.3.1 Atributos Principais ..................................................................................................................... 14
7.3.2 Sistema de Temporizador ............................................................................................................ 15
7.3.3 Sistema de Feedback Visual ........................................................................................................ 15
8. Interface Gráfica ................................................................................................................................... 16
8.1 Design e Estética ............................................................................................................................. 17
8.2 Componentes da Interface ............................................................................................................... 17
9. Funcionalidades .................................................................................................................................... 18
9.2 Temas das Perguntas ....................................................................................................................... 18
10. Testes e Resultados ............................................................................................................................. 19
11. Dificuldades Encontradas ................................................................................................................... 20
11.1 Implementação do Feedback Visual Animado ............................................................................. 20
11.2 Sincronização do Temporizador ................................................................................................... 20
11.3 Configuração do Projeto NetBeans ............................................................................................... 21
12. Conclusão............................................................................................................................................ 22
13. Referências Bibliográficas .................................................................................................................. 23
1. Introdução
O presente relatório descreve o desenvolvimento de um Jogo Quiz sobre Programação Orientada
a Objetos (POO), uma aplicação educacional interativa desenvolvida em linguagem Java. Este
projeto foi concebido com o objetivo de consolidar conhecimentos na área de desenvolvimento
de software utilizando o paradigma de Programação Orientada a Objetos.
A Programação Orientada a Objetos é um dos paradigmas de programação mais utilizados no
desenvolvimento de sistemas modernos, sendo fundamental para qualquer programador
compreender os seus conceitos e aplicá-los na prática. Assim, surgiu a ideia de criar uma
ferramenta lúdica que permitisse, simultaneamente, testar e reforçar conhecimentos sobre POO
através de um jogo de perguntas e respostas.
O sistema desenvolvido consiste numa aplicação desktop com interface gráfica moderna, que
apresenta questões sobre conceitos de POO e Java, permitindo ao utilizador testar os seus
conhecimentos de forma interativa e dinâmica.
2. Objetivos
2.1 Objetivo Geral
Desenvolver uma aplicação de Quiz educativo sobre Programação Orientada a Objetos e Java,
utilizando os princípios da própria POO, demonstrando a aplicação prática dos conceitos teóricos
estudados.
2.2 Objetivos Específicos
- Implementar umabase de dados com 50 perguntas ,esenvolver uma interface gráfica
- Implementar um sistema de temporizador com limite de 15 segundos por pergunta
- Criar um mecanismo de feedback visualpara indicar respostas corretas e incorretas
- Desenvolver um sistema de pontuaçãoque contabilize o desempenho do utilizador
- Garantir a aleatoriedadena apresentação das perguntas
3.1 Programação Orientada a Objetos (POO)
A Programação Orientada a Objetos é um paradigma de programação que organiza o software
como uma coleção de objetos que contêm dados (atributos) e comportamentos (métodos). Os
quatro pilares fundamentais da POO são:
3.1.1 Encapsulamento
O encapsulamento consiste em ocultar os detalhes internos de uma classe, expondo apenas o
necessário através de uma interface pública. Isto protege os dados de acessos indevidos e facilita
a manutenção do código.
3.1.2 Herança
A herança permite que uma classe (subclasse) herde características de outra classe (superclasse),
promovendo a reutilização de código e estabelecendo relações hierárquicas entre classes.
3.1.3 Polimorfismo
O polimorfismo permite que objetos de diferentes classes sejam tratados através de uma interface
comum, possibilitando que um mesmo método tenha comportamentos diferentes em classes
distintas.
3.1.4 Abstração
A abstração consiste em representar apenas as características essenciais de um objeto, ignorando
detalhes irrelevantes para o contexto em questão.
3.2 Linguagem Java
Java é uma linguagem de programação orientada a objetos, multiplataforma, robusta e
amplamente utilizada no desenvolvimento de aplicações empresariais, mobile e desktop. As
principais características do Java incluem:
Portabilidade: "Write Once, Run Anywhere" - o código compilado pode ser executado em
qualquer plataforma com JVM
Segurança: Gestão automática de memória e verificações de segurança
Orientação a Objetos: Suporte nativo aos conceitos de POO
Rica Biblioteca Padrã: APIs extensas para diversas funcionalidades
3.3 Java Swing
Java Swing é uma biblioteca de interface gráfica (GUI) que faz parte do Java Foundation Classes
(JFC). O Swing fornece componentes gráficos leves, personalizáveis e independentes de
plataforma para construção de interfaces de utilizador.
4. Metodologia
4.1 Ferramentas Utilizadas
| Ferramenta | Versão/Descrição | Finalidade |
|------------|------------------|------------|
| Java JDK25 | Linguagem de programação |
| NetBeans IDE 28 | Versão recente | Ambiente de desenvolvimento
| Java Swing | Biblioteca nativa | Interface gráfica |
| Git | - | Controle de versão |
4.2 Processo de Desenvolvimento
O desenvolvimento seguiu uma abordagem iterativa e incremental, dividida nas seguintes fases:
1. Análise de Requisitos: Definição das funcionalidades e características do sistema
2. Projeto: Modelagem das classes e definição da arquitetura
3. Implementação: Codificação das classes e interface gráfica
4. Testes: Verificação do funcionamento correto do sistema
5. Documentação: Elaboração do presente relatório
5. Descrição do Sistema
5.1 Visão Geral
O Quiz POO é um jogo educativo de perguntas e respostas sobre Programação Orientada a
Objetos e Java. O sistema apresenta ao utilizador uma série de 50 perguntas, cada uma com 3
alternativas de resposta, sendo apenas uma correta.
5.2 Regras do Jogo
✓ O jogo apresenta 50 perguntas sobre POO e Java
✓ Cada pergunta possui 3 alternativas de resposta
✓ As perguntas são exibidas de forma aleatória
✓ O utilizador tem 15 segundos para responder cada pergunta
✓ Resposta correta: +1 ponto (feedback visual verde)
✓ Resposta incorreta: 0 pontos (feedback visual vermelho)
✓ Tempo esgotado: 0 pontos (considerado como erro)
✓ No final, é exibida a pontuação total e a classificação de desempenho
5.3 Classificação de Desempenho
| Percentagem | Classificação |
|-------------|---------------|
| ≥ 90% | Excelente! |
| ≥ 70% | Muito Bom! |
| ≥ 50% | Bom! |
| │
└─────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ QuizGame │
│ (extends JFrame) │
├─────────────────────────────────────────┤
│ - questions: List │
│ - currentQuestionIndex: int │
│ - score: int │
│ - timeLeft: int │
│ - gameTimer: Timer │
│ - questionLabel: JLabel │
│ - timerLabel: JLabel │
│ - scoreLabel: JLabel │
│ - optionButtons: JButton[] │
│ - timeProgressBar: JProgressBar │
│ - feedbackOverlay: JPanel │
├─────────────────────────────────────────┤
│ + QuizGame() │
│ - setupUI(): void │
│ - createOptionButton(int): JButton │
│ - showQuestion(): void │
│ - iniciarCronometro(): void │
│ - tratarTempoEsgotado(): void │
│ - checkAnswer(int): void │
│ - showFinalScore(): void │
│ - restartGame(): void │
│ - showFeedbackCircle(...): void │
│ + main(String[]): void │
└─────────────────────────────────────────┘
7. Implementação
7.1 Classe Question
A classe `Question` representa o modelo de dados de uma pergunta no quiz. Implementa a
interface `Serializable` para permitir a serialização do objeto. Esta classe aplica o conceito de
encapsulamento, mantendo os atributos privados e fornecendo métodos públicos para acesso.
java
package com.poo.quiz;
import java.io.Serializable;
public class Question implements Serializable {
private String questionText;
private String[] options; // Deve ter tamanho 3
private int correctOptionIndex; // 0, 1 ou 2
public Question(String questionText, String option1,
String option2, String option3, int correctOptionIndex) {
this.questionText = questionText;
this.options = new String[] { option1, option2, option3 };
this.correctOptionIndex = correctOptionIndex;
}
// Getters
public String getQuestionText() { return questionText; }
public String[] getOptions() { return options; }
publicint getCorrectOptionIndex() { return correctOptionIndex; }
}
Conceitos de POO aplicados:
-Encapsulamento: Atributos privados com getters públicos
- Classe e Objeto: Modelo que define a estrutura de uma pergunta
7.2 Classe QuestionDatabase
A classe `QuestionDatabase` funciona como um repositório de perguntas, contendo todas as 50
questões sobre POO e Java. Utiliza o método estático `getAllQuestions()` para retornar a lista de
perguntas já embaralhadas aleatoriamente.
java
public class QuestionDatabase {
public static List getAllQuestions() {
List questions = new ArrayList();
// 50 perguntas sobre POO e Java
questions.add(new Question(
"O que é Programação Orientada a Objetos?",
"Um paradigma de programação baseado em objetos",
"Uma linguagem de programação",
"Um sistema operacional",
0));
// ... mais 49 perguntas ...
// Embaralhar as perguntas aleatoriamente
Collections.shuffle(questions);
return questions;
}
}
Conceitos aplicados:
- Método Estático: Acesso direto sem necessidade de instanciação
- Collections Framework: Uso de ArrayList e Collections.shuffle()
7.3 Classe QuizGame
A classe `QuizGame` é a classe principal que gerencia toda a lógica do jogo e a interface gráfica.
Herda da classe `JFrame` do Swing para criar a janela da aplicação.
7.3.1 Atributos Principais
java
public class QuizGame extends JFrame {
private List questions; Lista de perguntas
private int currentQuestionIndex = 0; Índice da pergunta atual
private int score = 0; Pontuação do jogador
private int timeLeft = 15; Tempo restante
private Timer gameTimer; Temporizador do jogo
Componentes da interface
private JLabel questionLabel;
private JLabel timerLabel;
private JLabel scoreLabel;
private JButton[] optionButtons;
private JProgressBar timeProgressBar;
}
7.3.2 Sistema de Temporizador
O temporizador utiliza a classe `javax.swing.Timer` para criar uma contagem regressiva de 15
segundos:
java
private void iniciarCronometro() {
gameTimer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
timeLeft--;
timerLabel.setText("Tempo: " + timeLeft + "s");
timeProgressBar.setValue(timeLeft);
Alteração de cor conforme o tempo restante
if (timeLeftvisual funcionam corretamente.
11. Dificuldades Encontradas
Durante o desenvolvimento do projeto, foram encontradas algumas dificuldades:
11.1 Implementação do Feedback Visual Animado
A criação de animações suaves para o círculo de feedback exigiu conhecimentos aprofundados
sobre:
- Uso de `Graphics2D` para desenho personalizado
- Animações com `Timer` do Swing
- Manipulação de transparência (canal alpha)
- Uso de `JLayeredPane` para sobreposição de componentes
Solução: Implementação de um painel customizado com animações de fade-in e fade-out
controladas por timers.
11.2 Sincronização do Temporizador
Garantir que o temporizador pausasse corretamente ao selecionar uma resposta e reiniciasse
adequadamente para a próxima pergunta.
Solução: Uso do método `stop()` do Timer antes de processar a resposta e criação de um novo
Timer para cada pergunta.
11.3 Configuração do Projeto NetBeans
A estrutura do projeto precisou ser configurada corretamente para funcionar tanto via linha de
comando quanto através do NetBeans IDE.
Solução: Criação de arquivos de configuração apropriados (build.xml, manifest.mf) e scripts
batch auxiliares.
12. Conclusão
O desenvolvimento do projeto Quiz POO permitiu a aplicação prática dos conceitos de
Programação Orientada a Objetos estudados ao longo da disciplina. Através da criação deste jogo
educativo, foi possível: Consolidar conhecimentos teóricos sobre os pilares da POO
(encapsulamento, herança, polimorfismo e abstração) através da sua implementação prática
Desenvolver competências técnicas em Java, especialmente no uso da biblioteca interfaces
gráficas , projeto atingiu todos os objetivos propostos, implementando as 50 perguntas, o sistema
de temporizador de 15 segundos, o feedback visual com círculos coloridos, a aleatoriedade na
apresentação das perguntas e o sistema de pontuação.
13. Referências Bibliográficas
1. DEITEL, H. M.; DEITEL, P. J. Java: Como Programar. 10ª ed. São Paulo: Pearson Education,
2016.
2. HORSTMANN, C.; CORNELL, G. Core Java Volume I - Fundamentals. 11th ed. Prentice
Hall, 2018.
3. BLOCH, J. Effective Java. 3rd ed. Addison-Wesley Professional, 2017.
4. Oracle.The Java Tutorials - Trail: Creating a GUI With Swing. Disponível em:
https://docs.oracle.com/javase/tutorial/uiswing/
5. Oracle Java Platform, Standard Edition Documentation. Disponível em:
https://docs.oracle.com/en/java/javase/
6. GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. Design Patterns: Elements of
Reusable Object-Oriented Software. Addison-Wesley, 1994.