O projeto LocateCar é uma aplicação em Java desenvolvida como parte de um sistema de gerenciamento de uma locadora de veículos. A aplicação tem como objetivo principal facilitar o processo de locação de veículos, proporcionando uma experiência rápida e conveniente para clientes e funcionários da locadora.
- Introdução
- Conceitos do módulo
- Arquitetura de Pastas do projeto
- A metodologia
- Demonstração do APP
- Fluxo para alocar veículo
- Ações
- Regras de negócios
- Ações a fazer
- Interface - Java Swing
Ao longo do módulo de Programação Orientada o Objetos II, nos aprofundamos nos conceitos e aplicações de Interfaces, Generics e SOLID em Java. Aqui você vai encontrar a resolução do projeto final, onde desenvolvemos um sistema utilizando os novos conhecimentos adquiridos.
Dentre os conceitos estudados: Generics, Interfaces, Collectins, Comparable, e SOLID, o que tivemos mais facilidade de aplicar no projeto foram Generics e Interfaces. A medida que o projeto crescia aumentava a complexidade e sentimos dificuldades em aplicar o Open/Closed Principle (Princípio Aberto/Fechado).
Figura: Organização de pastas do projeto na data de 17/03/24
Figura: Quadro de tarefas do projeto
Foi utilizada uma abordagem de resolução de problemas e desenvolvimento de software.
Algumas etapas do desenvolvimento foram:
1. Entendimento do problema: Procuramos entender os requisitos do negócio e os objetivos a serem alcançados.
2. Planejamento: Dividimos o problema em partes menores e mais gerenciáveis. Isso ajudou a abordar cada etapa de forma mais eficaz.
3. Escolha da metodologia de desenvolvimento: Metodologias ágeis, usamos um quadro Kanban do Github projects, para lidar com organização e autogerenciamento.
4. Implementação e Desenvolvimento: A escolha das ferramentas adequadas para implementar a solução foi a mesma utilizada nos módulos anteriores: IntelliJ, Maven e Java 21. Além disso, decidimos incluir mais um desafio como parte deste projeto para nosso aprendizados e experiência, que foi fazer implementações do Java Swing para criar um experiência mais agradável ao usuário.
5. Documentação: A documentação consiste na escrita deste README mantendo registros detalhados do processo de desenvolvimento, incluindo decisões, problemas encontrados e soluções implementadas e também este docuemento no Notion utilizado durante as reuniões de planning.
6. Comunicação: Fizemos dailys e reuniões regulares para assegurar que a solução proposta atendesse às expectativas do negócio.
🧰 Ferramentas úteis:
- Controle de versão: Git. Também utilizamos Gitflow durante o desenvolvimento.
- Ambientes de Desenvolvimento Integrado -(IDEs): Visual Studio Code e IntelliJ.
- Plataformas de Gerenciamento de Projetos: - Github Projects.
- outros: Miro, Draw.io.
Figura: Demonstração da aplicação
Figura: Fluxo para realizar uma locação
Ação | Descrição | Requer |
---|---|---|
Criar um novo cliente por tipo de id | CREATE |
CNPJ ou CPF |
Listar cliente por identificação | READ |
CNPJ ou CPF |
Atualizar as informações de um cliente | UPDATE |
CNPJ eou CPF |
Deletar o cliente por identificação | DELETE |
CNPJ ou CPF |
Ação | Descrição | Requer Tipo de Veículo |
---|---|---|
Criar um novo veículo | CREATE |
PEQUENO, MÉDIO E SUV |
Listar todos os veículos | READ |
PEQUENO, MÉDIO E SUV |
Atualizar as informações de um veículo | UPDATE |
PEQUENO, MÉDIO E SUV |
Deletar um veículo | DELETE |
PEQUENO, MÉDIO E SUV |
Ação | Descrição | Requer |
---|---|---|
Criar uma nova locação | CREATE |
CNPJ/CPF e PLACA |
Listar uma locação | READ |
CNPJ ou CPF e PLACA |
Deletar uma locação | DELETE |
CNPJ ou CPF e PLACA |
Regra de negócio | Descrição |
---|---|
RN1: |
Os veículos não podem ser repetidos; Pode utilizar a placa como identificador de unicidade; |
RN2: |
Tipos de veículos que serão considerados: PEQUENO, MEDIO e SUV; |
RN3: |
Os aluguéis e devoluções terão o local, data e horário; |
RN4: |
Considere aluguel em horas quebradas como uma diária completa. Exemplo: uma devolução de um veículo alugado no dia 25 de janeiro às 15h30 será cobrado uma (1) diária até dia 26 de janeiro às 15h30, a partir desse horário já serão cobradas duas (2) diárias e assim por diante. |
RN5: |
Os veículos que estiverem alugados não poderão estar disponíveis; |
RN6: |
Clientes não podem estar duplicados; Considerar CPF (Pessoa Física) e CNPJ (Pessoa Jurídica) como identificadores de unicidade; |
RN7.1: |
Devolução: Caso o cliente pessoa física tenha ficado com o carro mais que 5 diárias terá direito a 5% de desconto. |
RN7.2: |
Caso o cliente pessoa jurídica tenha ficado com o carro mais que 3 diárias terá direito a 10% de desconto. |
- O sistema deverá iniciar com um Administrador primordial (Adão).
- : Cadastrar cliente
- : Listar cliente por identificador
- : Atualização dados do cliente
- : O Usuário não poderá cadastrar o cpf ou cnpj caso já estejam cadastrados.
- : O Usuário poderá alterar email, senha, endereço, telefone, porém não o cpf ou cnpj.
- : Cadastrar um veículo por tipo
- : Listar veículos por disponibilidade
- : Listar veículo por atributo
- : Atualizar dados de um veículo
- : Deletar um veículo
- : Cadastrar uma locação
- : Listar locação por identificador de cliente e veículo
- : Deletar uma locação
- : Atualizar disponibilide de veículo devolvido
Como já mencionado, utilizamos o Java Swing, que é uma biblioteca de componentes de interface gráfica (GUI) para Java. Utilizamos alguns componentes e fizemos alguns personalizados. Foi interessante ver a flexibilidade e o comportamento dos componentes Swing.
Algumas telas desenvolvidas:
Por padrão, estamos usando a pasta frontend
para armazenar e manipularmos as interfaces e implementações referentes ao frontend.
O projeto ainda está em desenvolvimento e as próximas atualizações serão voltadas nas seguintes tarefas:
- : Adicionar camada de segurança
- : Buscar veículo por parte do nome
- : Paginação de clientes
- : Paginação de veículos
- : Paginação de alocação
- : Exportar arquivo
- : Histórico de locações
Fernanda Costa |
Maria Elissa |
Quer fazer parte desse projeto? Para contribuir, siga estas etapas:
- Bifurque este repositório.
- Crie um branch: git checkout -b <nome_branch>.
- Faça suas alterações e confirme-as: git commit -m '<mensagem_commit>'
- Envie para o branch original: git push origin <nome_do_projeto> / <local_>
- Crie a solicitação de pull.
Como alternativa, consulte a documentação do GitHub em como criar uma solicitação pull. Clique AQUI e leia como contribuir.
Esse projeto está sob licença. Veja o arquivo LICENÇA para mais detalhes.
Copyright © 2024 | LocateCar by Fernanda Costa e Maria Elissa