Skip to content

Arquitetura do Projeto

Guilherme Rodrigues edited this page Aug 18, 2025 · 2 revisions

Arquitetura do Projeto

A arquitetura deste projeto foi planejada para ser modular, escalável e fácil de manter, seguindo princípios de design de software como a Separação de Responsabilidades (SoC). O código-fonte está organizado em pacotes, cada um com um propósito bem definido.

Estrutura de Pacotes

A estrutura principal do código reside em src/main/java/com/guiccr/rpg/ e está dividida nos seguintes pacotes:

com.guiccr.rpg.model

Este pacote contém as classes que representam as entidades do domínio, ou seja, os "substantivos" do sistema. Elas armazenam dados e comportamentos relacionados.

  • Personagem.java: Classe abstrata base para todas as entidades combatentes, com atributos comuns como vida, força e defesa.
  • Heroi.java: Herda de Personagem e representa o avatar do jogador, incluindo lógica de experiência, inventário e habilidades.
  • Monstro.java: Herda de Personagem e representa os inimigos controlados pelo sistema.
  • Item.java, ItemGenerico.java, Equipavel.java, Espada.java, PocaoVida.java: Modelam os diferentes tipos de itens que um herói pode possuir e usar.
  • Inventario.java: Gerencia a coleção de itens de um herói.

com.guiccr.rpg.repository

Este pacote é responsável pela camada de persistência. Ele abstrai a comunicação com o banco de dados e implementa o padrão Repository de forma direta (sem interfaces).

  • RepositorioDeHerois.java: Métodos para operações CRUD (Create, Read, Update, Delete) na tabela herois do banco SQLite. Toda manipulação de dados persistentes de heróis passa por esta classe.

com.guiccr.rpg.service

Este pacote contém a lógica de negócio da aplicação, ou seja, os "verbos" do sistema. As classes de serviço orquestram as interações entre entidades do model e a camada de repository para executar as principais funcionalidades do jogo.

  • Batalha.java: Gerencia o fluxo de combate por turnos, cálculo de dano, ações dos personagens e determina o vencedor.

com.guiccr.rpg (Raiz)

Na raiz, estão as classes que coordenam a execução e a interface com o usuário.

  • Main.java: Ponto de entrada da aplicação (public static void main). Inicializa o menu principal.
  • MenuPrincipal.java: Controla o fluxo de navegação do jogador fora do combate, permitindo criar novo jogo, carregar existente ou sair.
  • GeradorDeNomes.java, ConsoleColors.java: Classes utilitárias para funcionalidades de apoio.

Observações

  • O padrão Repository é aplicado de forma direta, sem uso de interfaces ou abstrações avançadas.
  • Algumas lógicas de negócio (como manipulação de inventário ou efeitos de itens) também podem estar presentes nas entidades do pacote model.
  • A arquitetura facilita a manutenção, testes e futuras expansões do sistema.

Clone this wiki locally