Implemente um sistema de uma agencia bancária para gerenciar diversas contas. Por questões de simplicidade, apenas contas correntes serão consideradas, inicialmente.
As informações que o sistema precisa manter são, no mínimo, as seguintes:
- código da agencia
- código da conta
- tipo de conta (conta corrente ou poupança)
- quantidade de dinheiro na conta
As funcionalidade que o sistema precisa implementar são as seguintes:
- sacar (saque respeitando o saldo e um certo limite - se a conta tiver 100 reais e seu limite for de 50, o saque máximo será de 150)
- ver saldo
- depositar
- transferir
- total dedinheiro na agencia
Perguntas úteis, para refletir:
- quantas classes serão necessárias para implementar esse sistema?
- que informações ficarão em que classes?
- que métodos ficarão em que classes?
- que assinatura definir para cada método?
- que funcionalidades serão dsitribuídas por mais de uma classe?
Desafios "mais ou menos":
(1) implementar funcionalidade de extrato
(2) implementar um método de manutencão de contas. O método deve retirar uma taxa de manutenção do montante de cada conta da agência
(3) acrescente uma informação às contas. Elas podem ser contas correntes (implementadas até agora) ou tabém contas poupança. As contas poupança devem ter um comportamente de render, que acrescenta dinheiro à conta de acordo com uma determinada porcentagem
(4) faça uma funcionalidade de render para uma agencia inteira. Quando essa funcionalidade for executada, todas as contas do tipo poupança devem efetuar o rendimento de acordo com uma determinada porcentagem
(5) implementar uma manutenção de contas correntes fazer o mesmo feito em #3, sendo que para contas correntes. O procedimento deve efetuar a taxa de manutenção em todas as contas correntes de uma agencia
Desafios "mais mais":
(5) acrescentar um banco ao sistema. Um banco possui várias agências. Implementar um método que retorne o total de dinheiro armazenado em todas as contas associadas ao banco.
(6) implementar o desafio #4 para o banco como um todo
(7) modificar o desafio #2 de forma que o método de manutencao não tenha efeito caso seja invocado mais de uma vez dentro de um mesmo mês