Compilação e execução
-
Abra algum terminal.
-
Vá para o diretório Transferencia.
-
Para compilar, digite:
javac -d ./bin -cp ./src ./src/controle/Main.java -
Para executar, digite:
java -cp ./bin controle.Main
Se quiser compilar e executar a partir de outro diretório, apenas substitua os "." pelo caminho até o diretório Transferencia.
Caso queira alterar onde os arquivos .class serão gerados pela compilação apenas mude o "./bin" para o caminho do diretório desejado. Para executar, também substitua o "./bin" pelo mesmo da compilação.
Entrada
O programa aceita como entrada um arquivo chamado "entrada.txt" que pode ser passado como argumento para a execução. Caso não haja argumento, o programa procurará o arquivo "entrada.txt" no diretório atual aberto.
Exemplo de execução passando o arquivo como argumento:
java -cp ./bin controle.Main /home/mauricio/Documents/projects/entrada.txt
Para o funcionamento correto do código, o arquivo precisa conter em sua segunda linha não vazia os valores das variáveis na mesma ordem que o exemplo de entrada.txt da questão.
As formatações aceitas são:
id_transferencia: apenas números inteiros
valor transferência: valor decimal usando "." ou inteiro. Exemplos: 3.50, 3, 1000.6
tipo transferência: "PIX", "TED" ou "DOC"
nome_emissor e nome_receptor: apenas letras e espaços, exceto letras acentuadas, ç e espaços no início ou fim
agencia_emissor e agencia_receptor: apenas números inteiros
conta_emissor e conta_receptor: apenas números inteiros
cpf_emissor e cpf_receptor: string no formato "XXX.XXX.XXX-XX" ou "XXXXXXXXXXX", sendo X um número inteiro entre 0 e 9
Saída
A saída consiste em prints no terminal em que o código foi executado informando algum possível erro ou o sucesso na transferência.
Visão da construção do código
O código foi desenvolvido visando a facilidade de manutenção e inclusão de novas features. Por isso, os pacotes e as classes do código foram organizadas buscando minimizar a quantidade de trabalho necessário para a realização de ajustes. Nesse sentido, uma possível inclusão de um tipo de entrada diferente ou de um novo tipo de transferência seriam mais eficientes, por exemplo.
A partir da experiência que já tive de dentro do Itaú, tornou-se claro o quão grande a empresa é em todos os sentidos, refletindo na quantidade de seus códigos e suas extensões. Somando isso ao momento de migrações e transições de tecnologias que o banco se encontra, é evidente que o tipo de desenvolvimento que eu busquei é imprescindível ao Itaú.
Olá! Para seguirmos com o nosso processo seletivo do nosso programa de estágio, precisamos que você solucione o problema de lógica abaixo:
Primeiro, faça um fork desse repositório e adicione no seu github pessoal, clicando nesse link -> https://github.com/itau-canais-estag/teste-estag-canais/fork
No final do teste, envie no e-mail que você recebeu sobre a vaga, a URL do seu repositório!
A partir do arquivo de entrada.txt, onde a primeira linha representa as variáveis e a segunda representa os valores, desenvolva um algoritmo que execute operações de transferência bancária obedecendo os seguintes critérios:
- Toda transferência deverá ser feita entre um emissor e um receptor;
- Operador e receptor iniciam a operação com um saldo de R$ 0,00;
- As transferências deverão ser executadas de acordo com o seu tipo, sendo 3 os seus tipos: PIX, TED e DOC;
- O limite de valor máximo permitido para uma transferência via PIX é de R$ 5 mil;
- Transferências via TED só são permitidas para valores acima de R$ 5 mil e até R$ 10 mil;
- Transferências via DOC só são permitidas para valores acima de R$ 10 mil;
- Não serão permitidas transferências para a mesma conta, mas um emissor pode transferir para ele mesmo se for uma conta diferente;
- As entradas deverão estar sempre com todos os dados preenchidos.
Ao final da operação, uma mensagem deverá ser exibida:
- Se a transferência for bem sucedida, exibir mensagem de sucesso com o saldo do emissor e do receptor após a transferência, de acordo com o modelo:
Sua transferência foi realizada com sucesso!
Saldo do emissor: R$ X,XX
Saldo do receptor: R$X,XX
- Se a transferência não for completada, exibir mensagem de erro explicando o motivo, vide exemplo:
Sua transferência não foi completada pois (escrever o motivo)
Escolha, dentre as opoções de linguagens de programação abaixo, qual se sentir mais confortável em desenvolver o algoritmo e pense nos casos de teste descritos acima!
- Java
- Python
- Swift
- Kotlin
- Typescript
- C, C++/C#
Será observado o uso de boas práticas de programação, bem como orientaçao à objetos e se possível, aplicação de padrões de projeto.
Boa sorte!
