Este projeto é uma rede social básica desenvolvida em Java, projetada para oferecer funcionalidades essenciais de interação entre usuários. O sistema permite que os usuários realizem cadastro, login, publiquem posts, gerenciem amizades (adicionando ou removendo amigos), busquem e listem usuários, e interajam com posts por meio de curtidas, descurtidas e comentários. Toda a interação com o sistema é realizada por meio de um menu intuitivo exibido no console.
-
Gerenciamento de Usuários:
- Cadastro, atualização e exclusão de contas.
- Busca de usuários por nome ou username.
- Gerenciamento de amizades: adicionar, remover e listar amigos.
-
Gerenciamento de Posts:
- Criação, edição e exclusão de posts.
- Interações: curtir, descurtir e comentar posts.
- Listagem de posts por usuário.
-
Menu Principal:
- Criar Post
- Ver Perfil
- Buscar Usuários
- Gerenciar Amigos
- Ver Feed de Notícias
- Ver Posts por Usuário
- Lista de Usuários
- Logout
-
Menu de Usuários:
- Editar Perfil
- Excluir Conta
- Excluir Post
- Voltar
Organizado em pacotes para modularidade e clareza:
com.redesocial/
├── modelo/ # Classes de modelo/entidades
├── gerenciador/ # Classes de gerenciamento de dados
├── ui/ # Interface com usuário (console)
├── util/ # Classes utilitárias
└── exception/ # Exceções personalizadas
-
Clone o repositório:
git clone https://github.com/usuario/rede-social.git
-
Abra o projeto na sua IDE favorita:
- Utilize IDEs como IntelliJ IDEA ou Eclipse.
-
Configurar o JDK:
- Certifique-se de ter o JDK 11 ou superior instalado.
- Configure o JDK na sua IDE:
- IntelliJ IDEA: File -> Project Structure -> Project -> Selecione o JDK.
- Eclipse: Window -> Preferences -> Java -> Installed JREs -> Selecione o JDK.
-
Compile e execute o projeto:
- Configure a classe
Main
como ponto de entrada e execute. - Ou use o terminal:
java com.redesocial.Main
- Configure a classe
-
Exceções Personalizadas
- Foram criadas classes como
PostException
,UsuarioException
eValidacaoException
para identificar e tratar erros específicos de cada funcionalidade do sistema. Essa abordagem ajuda a isolar problemas e facilita o diagnóstico e a manutenção do código.
- Foram criadas classes como
-
Validação Centralizada
- Todas as validações críticas foram encapsuladas dentro de métodos ou classes dedicadas, eliminando redundâncias e assegurando que regras de negócio, como consistência dos dados e requisitos obrigatórios, sejam aplicadas de maneira uniforme.
-
Modularidade
- O sistema foi projetado com uma arquitetura modular. Cada classe possui uma única responsabilidade bem definida, como o gerenciamento de usuários (
GerenciadorUsuarios
) e de posts (GerenciadorPosts
). Isso promove organização, clareza e facilita futuras expansões ou correções no sistema.
- O sistema foi projetado com uma arquitetura modular. Cada classe possui uma única responsabilidade bem definida, como o gerenciamento de usuários (
-
Uso de Streams
- A API de Streams do Java foi amplamente utilizada para buscas e filtragens em coleções. Essa abordagem permitiu um código mais conciso, eficiente e legível, especialmente em operações como busca por usuários e listagem de posts.
-
Uso de Interface Funcional
- A interface
Validador
foi implementada para criar validações de forma flexível e modular. Isso permite configurar diferentes validações sem necessidade de alterar o código principal, promovendo uma estrutura extensível e adaptável.
- A interface
-
Organização do Código
- Cada classe, exceção e interface está organizada em pacotes específicos (
modelo
,gerenciador
,ui
,exception
eutil
), promovendo separação de responsabilidades e facilitando o entendimento geral da estrutura do projeto.
- Cada classe, exceção e interface está organizada em pacotes específicos (
-
Manutenibilidade e Extensibilidade
- A implementação foi feita com foco em facilitar a manutenção e futuras implementações. O uso de exceções personalizadas e validações modulares reduz o impacto de mudanças no sistema, tornando o código mais preparado para evoluir de acordo com novas necessidades.
Este projeto é licenciado sob a licença MIT. Consulte o arquivo LICENSE
para obter mais detalhes.