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.
Ao iniciar este projeto, você concorda com as diretrizes do Código de Conduta e do Manual da Pessoa Estudante da Trybe.
🤷🏽♀️ 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.
‼️ Antes de começar a desenvolver
- 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
- Instale as dependências
- Entre na pasta
src/. - Execute o comando:
dotnet restore.
- Crie uma branch a partir da branch
master
- Verifique se você está na branch
master.- Exemplo:
git branch
- Exemplo:
- Se não estiver, mude para a branch
master.- Exemplo:
git checkout master
- Exemplo:
- Agora crie uma branch à qual você vai submeter os
commitsdo 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
- Você deve criar uma branch no seguinte formato:
- 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)
- Exemplo:
- 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)
- Exemplo:
- Faça o
commitinicial.- Exemplo:
git commit -m 'iniciando o projeto x'(fazendo o primeiro commit)git status(deve aparecer uma mensagem tipo essa: nothing to commit )
- Exemplo:
- Adicione a sua branch com o novo
commitao repositório remoto
- Usando o exemplo anterior:
git push -u origin joaozinho-csharp-001-projeto-aluguel-de-carros.
- 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
commitsdas 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:
git status(para verificar o que está em vermelho - fora do stage - e o que está em verde - no stage)git add(para adicionar arquivos ao stage do Git)git commit(para criar um commit com os arquivos que estão no stage do Git)git push -u origin nome-da-branch(para enviar o commit para o repositório remoto na primeira vez que fizer opushde uma nova branch)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 timetryber/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.
Para executar os testes com o .NET, execute o comando dentro do diretório do seu projeto src/!
dotnet test
Para executar um teste expecífico, basta executar o comando dotnet test --filter Name~TestMethod1.
TestMethod1.
- 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 | quietm | minimaln | normald | detaileddiag | diagnostic- Exemplo de uso:
ou
dotnet test -v diagdotnet test --verbosity=diagnostic
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.csdescreve uma classe abstrata base para os veículos.Car.csdescreve uma classe derivada para carros.Truck.csdescreve uma classe derivada para caminhões.Motorcycle.csdescreve uma classe derivada para motos.
-
Person.csdescreve uma classe abstrata base para as pessoas clientes do sistema.PhysicalPerson.csdescreve uma classe derivada para pessoas físicas.LegalPerson.csdescreve uma classe derivada para pessoas jurídicas.
-
Rent.csdescreve a classe para um aluguel entre uma pessoa e um veículo.
Mais informações
Crie sua lógica em src/RentCars/Types/Structs/Color.cs
O que será testado:
- A struct deve conter o campo
Namedo tipostring - A struct deve conter o campo
Hexdo tipostring - Os atributos devem ser públicos.
Mais informações
Crie sua lógica em src/RentCars/Types/Enums/FuelType.cs
O que será testado:
- O enum deve conter o campo
Alcoholcom valor 10 - O enum deve conter o campo
Gasolinecom valor 20 - O enum deve conter o campo
Flexcom valor 30 - O enum deve conter o campo
Dieselcom valor 40 - O enum deve conter o campo
Electriccom valor 50 - O enum deve conter o campo
Hybridcom valor 60
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:
Brandque deve ser do tipostring, ter valor padrão igual à "", deve ter get e set;Modelque deve ser do tipostring, ter valor padrão igual à "", deve ter get e set;Priceque deve ser do tipodecimal, deve ter get e set;Fuelque deve ser do tipoFuelType, deve ter get e set;EngineCapacityque deve ser do tipoint, deve ter get e set;MainColorque deve ser do tipoColor, deve ter get e set;Yearque deve ser do tipoint, deve ter get e set;PricePerDayque deve ser do tipodouble, deve ter get e set;IsRentedque deve ser do tipobool, ter valor padrão igual à false, deve ter get e set;
Mais informações
Crie sua lógica em src/RentCars/Types/Enums/BreakeType.cs
O que será testado:
- O enum deve conter o campo
Chambercom valor 1 - O enum deve conter o campo
Disccom valor 2 - O enum deve conter o campo
Drumcom valor 3
Mais informações
Crie sua lógica em src/RentCars/Types/Enums/TractionType.cs
O que será testado:
- O enum deve conter o campo
FrontWheelDrivecom valor 0 - O enum deve conter o campo
RearWheelDrivecom valor 1 - O enum deve conter o campo
AllWheelDrivecom valor 2
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:
Seatsque deve ser do tipoInt;Doorsque deve ser do tipoInt;Tractionque deve ser do tipoTractionType;FrontBrakeque deve ser do tipoBrakeType;RearBrakeque deve ser do tipoBrakeType;
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:
SeatHeightque deve ser do tipodouble;FrontBrakeque deve ser do tipoBrakeType;RearBrakeque deve ser do tipoBrakeType;
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:
LoadCapacityque deve ser do tipodouble;
Mais informações
Crie sua lógica em src/RentCars/Types/Enums/RentStatus.cs
O que será testado:
- O enum deve conter o campo
Confirmedcom valor 0 - O enum deve conter o campo
Finishedcom valor 1 - O enum deve conter o campo
Canceledcom valor igual aoFinished
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
Pricedeve-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
IsRenteddo veículo paratrue. -
O construtor deve alterar o atributo
Debitda pessoa para o Preço calculado.
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
Statusdeve ser alterado paraRentStatus.Cancelled
- O
-
O método
Rent.Finish()deve finalizar um aluguel- O
Statusdeve ser alterado paraRentStatus.Finished
- O
🗣 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!
🗂 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.