Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aluguel de Carros

Boas-vindas ao repositório do projeto Aluguel de Carros

Para realizar o projeto, atente-se a cada passo descrito a seguir, e se tiver qualquer dúvida, nos envie no Slack da turma! #vqv 🚀

Aqui, você vai encontrar os detalhes de como estruturar o desenvolvimento do seu projeto a partir desse repositório, utilizando uma branch específica e um Pull Request para colocar seus códigos.

Termos e acordos

Ao iniciar este projeto, você concorda com as diretrizes do Código de Conduta e do Manual da Pessoa Estudante da Trybe.

Entregáveis

🤷🏽‍♀️ Como entregar

Para entregar o seu projeto você deverá criar um Pull Request neste repositório.

Lembre-se que você pode consultar nosso conteúdo sobre Git & GitHub e nosso Blog - Git & GitHub sempre que precisar!

🧑‍💻 O que deverá ser desenvolvido

Você deverá construir uma aplicação do tipo Console com a capacidade de realizar diversas operações básicas de um sistema de aluguel de carros. Essa aplicação controlará diversos tipos de veículos, status de locações além dos processos de locar um veículo ou cancelar uma locação.

📝 Habilidades a serem trabalhadas

Neste projeto, verificamos se você é capaz de:

  • Aplicar programação orientada a objetos
  • Desenvolver de classes
  • Instanciar objetos e utilizar classes de maneira correta
  • Utilizar tipos avançados.

Orientações

‼️ Antes de começar a desenvolver
  1. Clone o repositório
  • Use o comando: git clone git@github.com:tryber/csharp-001-projeto-aluguel-de-carros.git.
  • Entre na pasta do repositório que você acabou de clonar:
    • cd csharp-001-projeto-aluguel-de-carros
  1. Instale as dependências
  • Entre na pasta src/.
  • Execute o comando: dotnet restore.
  1. Crie uma branch a partir da branch master
  • Verifique se você está na branch master.
    • Exemplo: git branch
  • Se não estiver, mude para a branch master.
    • Exemplo: git checkout master
  • Agora crie uma branch à qual você vai submeter os commits do seu projeto.
    • Você deve criar uma branch no seguinte formato: nome-de-usuario-nome-do-projeto
    • Exemplo: git checkout -b joaozinho-csharp-001-projeto-aluguel-de-carros
  1. Adicione as mudanças ao stage do Git e faça um commit
  • Verifique que as mudanças ainda não estão no stage.
    • Exemplo: git status (deve aparecer listada a pasta joaozinho em vermelho)
  • Adicione o novo arquivo ao stage do Git.
    • Exemplo:
      • git add . (adicionando todas as mudanças - que estavam em vermelho - ao stage do Git)
      • git status (deve aparecer listado o arquivo joaozinho/README.md em verde)
  • Faça o commit inicial.
    • Exemplo:
      • git commit -m 'iniciando o projeto x' (fazendo o primeiro commit)
      • git status (deve aparecer uma mensagem tipo essa: nothing to commit )
  1. Adicione a sua branch com o novo commit ao repositório remoto
  • Usando o exemplo anterior: git push -u origin joaozinho-csharp-001-projeto-aluguel-de-carros.
  1. Crie um novo Pull Request (PR)
  • Vá até a página de Pull Requests do repositório no GitHub.
  • Clique no botão verde "New pull request".
  • Clique na caixa de seleção "Compare" e escolha a sua branch com atenção.
  • Coloque um título para a sua Pull Request.
    • Exemplo: "Cria tela de busca"
  • Clique no botão verde "Create pull request".
  • Adicione uma descrição para o Pull Request e clique no botão verde "Create pull request".
  • Não se preocupe em preencher mais nada por enquanto!.
  • Volte até a página de Pull Requests do repositório e confira que o seu Pull Request está criado.
⌨️ Durante o desenvolvimento
  • Faça commits das alterações que você fizer no código regularmente.

  • Lembre-se sempre, após um (ou alguns) commits, de atualizar o repositório remoto.

  • Os comandos que você utilizará com mais frequência são:

    1. git status (para verificar o que está em vermelho - fora do stage - e o que está em verde - no stage)
    2. git add (para adicionar arquivos ao stage do Git)
    3. git commit (para criar um commit com os arquivos que estão no stage do Git)
    4. git push -u origin nome-da-branch (para enviar o commit para o repositório remoto na primeira vez que fizer o push de uma nova branch)
    5. git push (para enviar o commit para o repositório remoto após o passo anterior)
🤝 Depois de terminar o desenvolvimento (opcional)

Para sinalizar que o seu projeto está pronto para o "Code Review", faça o seguinte:

  • Vá até a página DO SEU Pull Request, adicione a label de "code-review" e marque seus colegas:

    • No menu à direita, clique no link "Labels" e escolha a label code-review;

    • No menu à direita, clique no link "Assignees" e escolha o seu usuário;

    • No menu à direita, clique no link "Reviewers" e digite students, selecione o time tryber/students-sd-0x.

Caso tenha alguma dúvida, aqui tem um video explicativo.

🕵🏿 Revisando um pull request

Use o conteúdo sobre Code Review para te ajudar a revisar os Pull Requests.

🎛 Linter

Usaremos o NetAnalyzer para fazer a análise estática do seu código.

Este projeto já vem com as dependências relacionadas ao linter configuradas no arquivo .csproj.

O analisador já é instalado pelo plugin da Microsoft C# no VSCode. Para isso, basta fazer o download do plugin e instalá-lo.

🛠 Testes

O .NET já possui sua própria plataforma de testes.

Este projeto já vem configurado e com suas dependências.

Executando todos os testes

Para executar os testes com o .NET, execute o comando dentro do diretório do seu projeto src/!

dotnet test

Executando um teste específico

Para executar um teste expecífico, basta executar o comando dotnet test --filter Name~TestMethod1.

⚠️ Importante: o comando irá executar testes cujo nome contém TestMethod1.

⚠️ O avaliador automático não necessariamente avalia seu projeto na ordem em que os requisitos aparecem no readme. Isso acontece para deixar o processo de avaliação mais rápido. Então, não se assuste se isso acontecer, ok?

Outras opções para testes

  • Algumas opções que podem lhe ajudar são:
    • -?|-h|--help: exibem a descrição completa de como utilizar o comando.
    • -t|--list-tests: lista todos os testes, ao invés de executá-los.
    • -v|--verbosity <LEVEL>: define o nível de detalhe na resposta dos testes.
    • q | quiet
    • m | minimal
    • n | normal
    • d | detailed
    • diag | diagnostic
    • Exemplo de uso:
        dotnet test -v diag
      
      ou
        dotnet test --verbosity=diagnostic
      

Requisitos do Projeto

A empresa do coração em que você trabalha está desenvolvendo um sistema para controlar o aluguel de carros, e você foi o primeiro contratado para iniciar o desenvolvimento do sistema.

O Rent Cars está dividido em partes orgainzadas. Em Model você vai encontrar as classes bases que devem seguir a seguinte hierarquia:

  • Vehicle.cs descreve uma classe abstrata base para os veículos.

    • Car.cs descreve uma classe derivada para carros.
    • Truck.cs descreve uma classe derivada para caminhões.
    • Motorcycle.cs descreve uma classe derivada para motos.
  • Person.cs descreve uma classe abstrata base para as pessoas clientes do sistema.

    • PhysicalPerson.cs descreve uma classe derivada para pessoas físicas.
    • LegalPerson.cs descreve uma classe derivada para pessoas jurídicas.
  • Rent.cs descreve a classe para um aluguel entre uma pessoa e um veículo.

1. Crie uma Struct para as Cores

Mais informações

Crie sua lógica em src/RentCars/Types/Structs/Color.cs

O que será testado:

  • A struct deve conter o campo Name do tipo string
  • A struct deve conter o campo Hex do tipo string
  • Os atributos devem ser públicos.

2. Crie um enum FuelType

Mais informações

Crie sua lógica em src/RentCars/Types/Enums/FuelType.cs

O que será testado:

  • O enum deve conter o campo Alcohol com valor 10
  • O enum deve conter o campo Gasoline com valor 20
  • O enum deve conter o campo Flex com valor 30
  • O enum deve conter o campo Diesel com valor 40
  • O enum deve conter o campo Electric com valor 50
  • O enum deve conter o campo Hybrid com valor 60

3. Crie a classe Vehicle

Mais informações

Crie sua lógica em src/RentCars/Models/Vehicle.cs

A classe deve conter os campos comuns à um veículo.

O que será testado:

  • A classe deve ter as seguintes propriedades:
    • Brand que deve ser do tipo string, ter valor padrão igual à "", deve ter get e set;
    • Model que deve ser do tipo string, ter valor padrão igual à "", deve ter get e set;
    • Price que deve ser do tipo decimal, deve ter get e set;
    • Fuel que deve ser do tipo FuelType, deve ter get e set;
    • EngineCapacity que deve ser do tipo int, deve ter get e set;
    • MainColor que deve ser do tipo Color, deve ter get e set;
    • Year que deve ser do tipo int, deve ter get e set;
    • PricePerDay que deve ser do tipo double, deve ter get e set;
    • IsRented que deve ser do tipo bool, ter valor padrão igual à false, deve ter get e set;

4. Crie um enum BrakeType

Mais informações

Crie sua lógica em src/RentCars/Types/Enums/BreakeType.cs

O que será testado:

  • O enum deve conter o campo Chamber com valor 1
  • O enum deve conter o campo Disc com valor 2
  • O enum deve conter o campo Drum com valor 3

5. Crie um enum TractionType

Mais informações

Crie sua lógica em src/RentCars/Types/Enums/TractionType.cs

O que será testado:

  • O enum deve conter o campo FrontWheelDrive com valor 0
  • O enum deve conter o campo RearWheelDrive com valor 1
  • O enum deve conter o campo AllWheelDrive com valor 2

6. Faça a classe Car herdar de Vehicle

Mais informações

Crie sua lógica em src/RentCars/Models/Car.cs

Adicione a herança da classe Vehicle Adicione novos campos específicos de Car

O que será testado:

  • A classe deve ter as seguintes propriedades:
    • Seats que deve ser do tipo Int;
    • Doors que deve ser do tipo Int;
    • Traction que deve ser do tipo TractionType;
    • FrontBrake que deve ser do tipo BrakeType;
    • RearBrake que deve ser do tipo BrakeType;

7. Faça a classe Motorcycle herdar de Vehicle

Mais informações

Crie sua lógica em src/RentCars/Models/Motorcycle.cs

Adicione a herança da classe Vehicle

Adicione novos campos específicos de Motorcycle

O que será testado:

  • A classe deve ter as seguintes propriedades:
    • SeatHeight que deve ser do tipo double;
    • FrontBrake que deve ser do tipo BrakeType;
    • RearBrake que deve ser do tipo BrakeType;

8. Faça a classe PickupTruck herdar de Car

Mais informações

Crie sua lógica em src/RentCars/Models/PickupTruck.cs

Adicione a herança da classe Vehicle

Adicione novos campos específicos de PickupTruck

O que será testado:

  • A classe deve ter as seguintes propriedades:
    • LoadCapacity que deve ser do tipo double;

9. Crie um enum RentStatus

Mais informações

Crie sua lógica em src/RentCars/Types/Enums/RentStatus.cs

O que será testado:

  • O enum deve conter o campo Confirmed com valor 0
  • O enum deve conter o campo Finished com valor 1
  • O enum deve conter o campo Canceled com valor igual ao Finished

10. Crie o construtor de Rent seguindo as regras de negócio

Mais informações

Crie sua lógica em src/RentCars/Models/Rent.cs

O que será testado: O construtor deve receber uma instância de Vehicle, uma de Person e um valor inteiro com os dias alugados.

  • Para calcular o atributo Price deve-se seguir a seguinte regra:

  • Para pessoas fisícas o preço deve ser o preço por dia do veículo * os dias alugados.

  • Para pessoas jurídicas o preço deve ser o preço por dia do veículo * os dias alugados com 10% de desconto.

  • O status inicial deve ser RentStatus.Confirmed

  • O construtor deve alterar o atributo IsRented do veículo para true.

  • O construtor deve alterar o atributo Debit da pessoa para o Preço calculado.

Bônus (não avaliativo) - Implemente os métodos de cancelar e finalizar um aluguel

Mais informações

Crie sua lógica em src/RentCars/Types/Models/Rent.cs

O que será testado:

  • O método Rent.Cancel() deve cancelar um aluguel

    • O Status deve ser alterado para RentStatus.Cancelled
  • O método Rent.Finish() deve finalizar um aluguel

    • O Status deve ser alterado para RentStatus.Finished
🗣 Nos dê feedbacks sobre o projeto!

Ao finalizar e submeter o projeto, não se esqueça de avaliar sua experiência preenchendo o formulário. Leva menos de 3 minutos!

Formulário de avaliação do projeto

🗂 Compartilhe seu portfólio!

Você sabia que o LinkedIn é a principal rede social profissional e compartilhar o seu aprendizado lá é muito importante para quem deseja construir uma carreira de sucesso? Compartilhe esse projeto no seu LinkedIn, marque o perfil da Trybe (@trybe) e mostre para a sua rede toda a sua evolução.


About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages