Este projeto foi desenvolvido como parte dos estudos de Programação Orientada a Objetos (POO) em Java, da Unidade II, Aula II (Estruturas de Decisão, Controle e Repetição) do curso de Engenharia de Software. O objetivo principal é simular o funcionamento de um robô em um ambiente 2D, utilizando classes, objetos e estruturas de decisão/repetição para demonstrar conceitos básicos de POO.
- Tecnologias e Ferramentas
- Objetivo do Projeto
- Funcionalidades Implementadas
- Como Executar
- Modo Interativo
- Futuras Melhorias
- Contribuição
- Contato
- Java: Versão 17
- Maven: Versão 3.8.7
- IDE: IntelliJ IDEA
- Praticar conceitos de POO em Java: criação de classes, objetos, construtores, métodos e atributos.
- Modelar entidades (robô, caixa, mundo 2D), conforme o enunciado da atividade.
- Simular movimentos do robô em um plano bidimensional, manipulando coordenadas x e y.
- Demonstrar o uso de estruturas de decisão (
if/else,switch-case) e laços de repetição (while,for).
- Representa o ambiente em que o robô se move, com dimensões x e y.
- Modela caixas no ambiente, com atributos como nome, quantidade e dimensões (altura, largura, peso, etc.).
- Robô com posição (x, y), orientação (
FRENTE,TRAS,DIREITA,ESQUERDA), velocidade, tração e carga. - Métodos para movimentação e exibição de posição.
- Implementa lógica de movimento com base em entradas do teclado.
- Interpreta comandos da linha de comando (
--help,--author, etc.). - Possui modo interativo, acionado com
--move, permitindo controle do robô em tempo real pelo teclado.
git clone https://github.com/rafaeloliveiralopes/SimuladorRobo.git
cd SimuladorRobomvn clean compile# Exibe o autor
java -cp target/classes com.roboproject.App --author
# Exibe os comandos disponíveis
java -cp target/classes com.roboproject.App --helpjava -cp target/classes com.roboproject.App --movew→ move o robô para frentea→ move o robô para esquerdas→ move o robô para trásd→ move o robô para direita1→ mostra a posição atual do robô0→ encerra o programa
O modo interativo permite simular os movimentos do robô em tempo real, atualizando sua posição após cada entrada de comando.
- Limitação de movimento ao Mundo2D: evitar que o robô ultrapasse os limites do ambiente.
- Detecção de colisão com caixas: permitir interação entre robô e objetos no cenário.
- Interface gráfica (GUI) para visualização dos movimentos.
- Teste de unidades (JUnit) para garantir o funcionamento das classes.
Este projeto é uma aplicação prática dos principais conceitos de Programação Orientada a Objetos (POO) com Java, com base nos tópicos estudados no módulo:
- Criação e uso de classes e objetos (
Robo,Caixa,Mundo2D); - Encapsulamento de atributos e métodos, com uso de
gettersesetters; - Herança e abstração, por meio das classes abstratas
RoboIdeiaeCaixaIdeia; - Uso de enums para representar constantes (
Orientacao); - Sobrescrita de métodos (
@Override) e uso de polimorfismo; - Construtores com sobrecarga, demonstrando reutilização e especialização;
- Controle de fluxo com estruturas
if,switch-caseewhile; - Leitura de entrada do usuário com
Scannerpara controle interativo via teclado; - Formatação de saída com
System.out.printfpara exibir status formatado; - Validação de argumentos e uso de exceções (
IllegalArgumentException).
Além disso, o projeto pode ser expandido com novas funcionalidades como gráficos, colisões e testes unitários.
🔹 Autor: Rafael Oliveira Lopes
🔹 Email: rafaellopes.dev@email.com
🔹 LinkedIn: LinkedIn
🔹 Site: rafaellopes.dev
