Skip to content

Latest commit

 

History

History
506 lines (334 loc) · 21.1 KB

File metadata and controls

506 lines (334 loc) · 21.1 KB

Projeto 01 - Conta Bancária - ContaController - Parte III

Na etapa anterior, implementamos os 5 Métodos do CRUD na Classe ContaController. Nesta última estapa do Projeto vamos finalizar a Classe ContaController implementando os 3 Métodos Bancários (Saque, Depósito e Transferência).

O Diagrama de Classes do nosso Projeto ficará da seguinte forma:

classDiagram
class Conta {
<<Abstract>>
  - numero : int
  - agencia : int
  - tipo : int
  - titular : String
  - saldo : float
  + int getNumero()
  + int getAgencia()
  + int getTipo()
  + String getTitular()
  + float getSaldo()
  + void setNumero(int numero)
  + void setAgencia(int agencia)
  + void setTipo(int tipo)
  + void setTitular(String titular)
  + void setSaldo(float saldo)
  + boolean sacar(float valor)
  + void depositar(float valor)
  + void visualizar()
}
class ContaCorrente {
  - limite : float
  + float getLimite()
  + void setLimite(float limite)
  + boolean sacar(float valor)
  + void visualizar()
}
class ContaPoupanca {
  - aniversario : int
  + int getAniversario()
  + void setAniversario(int aniversario)
  + void visualizar()
}
class ContaRepository{
<< Interface >>
+ void procurarPorNumero(int numero)
+ void listarTodas()
+ void cadastrar(Conta conta)
+ void atualizar(Conta conta)
+ void deletar(int numero)
+ void sacar(int numero, float valor)
+ void depositar(int numero, float valor)
+ void transferir(int numeroOrigem, int numeroDestino, float valor)
}
class ContaController{
+ void procurarPorNumero(int numero)
+ void listarTodas()
+ void cadastrar(Conta conta)
+ void atualizar(Conta conta)
+ void deletar(int numero)
+ void sacar(int numero, float valor)
+ void depositar(int numero, float valor)
+ void transferir(int numeroOrigem, int numeroDestino, float valor)
+ int gerarNumero()
+ Conta buscarNaCollection(int numero) 
}
Conta <|-- ContaCorrente : É um tipo de
Conta <|-- ContaPoupanca : É um tipo de
Conta <-- ContaRepository : Tem uma
ContaRepository <|-- ContaController : Implementa
Loading

👣 Passo 01 - Implementar o Método Sacar

Na sequência, vamos implementar o Método Sacar, através do código abaixo:

Linha 62: Observe que na assinatura do Método, foram inseridos 2 parâmetros:

  • numero: Número da conta que será efetuada a operação de Saque.
  • valor: O valor que será debitado da conta.

Linha 63: Antes de Efetuar o saque na conta, precisamos verificar se a conta existe. Observe que foi criada a variável local buscaConta, para receber o Objeto da Classe Conta, que foi encontrado na Collection listaContas.

O Objeto conta foi criado através da palavra reservada var. Por inferência, a palavra reservada var entende que a variável conta, deve ser um Objeto da Classe Conta, porque receberá o retorno do Método buscarNaCollection.

Linhas 65 a 72: Através do Laço Condicional, verifica se o Objeto Conta foi encontrado (linha 66).

  • Se a conta foi encontrada, um novo laço condicional será executado para checar se o saque foi bem sucedido (linha 68). A operação saque será efetuada através do Método sacar(valor), do tipo boolean (verdadeiro ou falso).
  • Caso o saque tenha sido bem sucedido, o Método retornará o valor true (verdadeiro) e na sequência será exibida uma mensagem confirmando o saque (linha 69). Caso o Saque não seja bem sucedido (Saldo insuficiente), o próprio Método sacar(valor) exibirá uma mensagem indicando que o Saldo da conta é insuficiente.
  • Caso a conta não seja encontrada (linha 71), será exibida na tela a mensagem informando que a conta não foi encontrada (linha 72).

Salve as alterações!

Para efetuar o saque, precisamos receber o numero da Conta de origem e o valor do saque, via teclado. Para receber os dados via teclado, precisamos criar um "formulário" para receber os dados através dos Comandos de Entrada e Saída.


👣 Passo 02 - Inserir o Método Sacar na Classe Menu

Agora que implementamos o Método Sacar, vamos inserir uma chamada para este Método na Classe Menu:

Para efetuar as operações bancárias, vamos criar algumas variáveis, que irão armazenar temporariamente os dados da transação.

  1. Crie as novas variáveis na Classe Menu, como mostra o trecho de código abaixo:
  1. O trecho acima, cria as seguintes variáveis (marcada por uma linha vermelha):
Nome Tipo Descrição
numeroDestino int Numero da conta de destino do depósito
valor float Valor do saque, depósito ou transferência

Variáveis criadas, vamos criar o formulário da operação saque e criar a chamada para o Método Sacar na Classe Menu

  1. Na Classe Menu, localize o trecho de código abaixo:
  1. Insira o trecho de código abaixo:

Linhas 179 a 180: Foi criada a entrada de dados, via teclado, para a variável numero.

Linhas 182 a 185: Foi criado um Laço de repetição do...while, para garantir que a variável valor receba via teclado um numero positivo e maior do que zero.

Linha 184: Foi criada a chamada para o Método sacar(), criado na Classe ContaController. Na chamada do Método foram inseridos 2 parâmetros:

  • numero: Numero da Conta onde o saque será efetuado;
  • valor: Valor que será debitado da conta.

Salve e Execute o projeto clicando no botão Run.

  1. Será aberto o Menu, que deve ser semelhante ao da figura abaixo:
  1. Digite a opção 6 (indicado com uma seta verde na imagem acima) e veja o resultado abaixo:
Digite o Numero da conta: 
1
Digite o Valor do Saque (R$): 
100

O Saque na Conta numero: 1 foi efetuado com sucesso!


Pressione Enter para Continuar...

No exemplo acima fizemos um saque de R$ 100,00 na conta numero 1 e uma mensagem de confirmação foi exibida na tela.

  1. Experimente repetir a operação na conta numero 10:
Digite o Numero da conta: 
10
Digite o Valor do Saque (R$): 
100

A Conta numero: 10 não foi encontrada!

Pressione Enter para Continuar...

Observe que a conta numero 10 não foi encontrada e uma mensagem foi exibida na tela.

Na sequência, vamos confirmar se o saque na conta numero 1 foi efetuado com sucesso:

  1. Digite a opção 3 (indicado com uma seta verde na imagem abaixo):
  1. No item numero da conta, digite o numero 1 e veja o resultado abaixo:
Consultar dados da Conta - por número

Digite o número da conta: 
1

*********************************************************************
Dados da Conta:
*********************************************************************
Numero da Conta: 1
Agência: 123
Tipo da Conta: Conta Corrente
Titular: João da Silva
Saldo: 900.0
Limite de Crédito: 100.0

Pressione Enter para Continuar...

Observe que o saldo da conta numero 1 foi alterado de R$ 1000,00 para R$ 900,00, confirmando que o saque foi efetuado com sucesso.


DESAFIO: Experimente fazer um saque com um valor maior do que o Saldo da conta e um outro saque passando um valor negativo. No caso de uma Conta Corrente, lembre-se que o saldo é composto por: saldo + limite. A melhor forma de aprender uma Linguagem de Programação é praticando!

👣 Passo 03 - Implementar o Método Depositar

Na sequência, vamos implementar o Método Depositar, através do código abaixo:

Linha 76: Observe que na assinatura do Método, foram inseridos 2 parâmetros:

  • numero: Número da conta que será efetuada a operação de Saque.
  • valor: O valor que será debitado da conta.

Linha 77: Antes de Efetuar o depósito na conta, precisamos verificar se a conta existe. Observe que foi criada a variável local conta, para receber o Objeto da Classe Conta, que foi encontrado na Collection listaContas. Esse Objeto foi criado através da palavra reservada var. Por inferência, a palavra reservada var entende que a variável conta, deve ser um Objeto da Classe Conta, porque receberá o retorno do Método buscarNaCollection.

  • Linhas 80 a 85: Através do Laço Condicional, verifica se o Objeto Conta foi encontrado (linha 80).
    • Se a conta foi encontrada, a operação depósito será efetuada através do Método depositar(valor) (linha 81).
    • Na sequência será exibida uma mensagem confirmando o depósito (linha 82).
    • Caso a conta não seja encontrada (linha 83), será exibida na tela a mensagem informando que a conta não foi encontrada (linha 84).

Salve as alterações!

Para efetuar o depósito, precisamos receber o numero da Conta de destino e o valor do depósito, via teclado. Para receber os dados via teclado, precisamos criar um "formulário" para receber os dados através dos Comandos de Entrada e Saída.


👣 Passo 04 - Inserir o Método Depositar na Classe Menu

Agora que implementamos o Método Depositar, vamos inserir uma chamada para este Método na Classe Menu:

Vamos criar o formulário da operação depósito e criar a chamada para o Método Depositar na Classe Menu

  1. Na Classe Menu, localize o trecho de código abaixo:
  1. Insira o trecho de código abaixo:

Linhas 194 a 195: Foi criada a entrada de dados, via teclado, para a variável numero.

Linhas 197 a 200: Foi criado um Laço de repetição do...while, para garantir que a variável valor receba via teclado um numero positivo e maior do que zero.

Linha 202: Foi criada a chamada para o Método depositar(), criado na Classe ContaController. Na chamada do Método foram inseridos 2 parâmetros:

  • numero: Numero da Conta onde o depósito será efetuado;
  • valor: Valor que será creditado da conta.

Salve e Execute o projeto clicando no botão Run.

  1. Será aberto o Menu, que deve ser semelhante ao da figura abaixo:
  1. Digite a opção 7 (indicado com uma seta verde na imagem acima) e veja o resultado abaixo:
Depósito

Digite o Numero da conta: 
1
Digite o Valor do Depósito (R$): 
100

O Depósito na Conta numero: 1 foi efetuado com sucesso!

Pressione Enter para Continuar...

No exemplo acima fizemos um depósito de R$ 100,00 na conta numero 1 e uma mensagem de confirmação foi exibida na tela.

  1. Experimente repetir a operação na conta numero 10:
Depósito

Digite o Numero da conta: 
10
Digite o Valor do Depósito (R$): 
100

A Conta numero: 10 não foi encontrada ou a Conta destino não é uma Conta Corrente!

Pressione Enter para Continuar...

Observe que a conta numero 10 não foi encontrada e uma mensagem foi exibida na tela.

Na sequência, vamos confirmar se o depósito na conta numero 1 foi efetuado com sucesso:

  1. Digite a opção 3 (indicado com uma seta verde na imagem abaixo):
  1. No item numero da conta, digite o numero 1 e veja o resultado abaixo:
Consultar dados da Conta - por número

Digite o número da conta: 
1

*********************************************************************
Dados da Conta:
*********************************************************************
Numero da Conta: 1
Agência: 123
Tipo da Conta: Conta Corrente
Titular: João da Silva
Saldo: 1100.0
Limite de Crédito: 100.0

Pressione Enter para Continuar...

Observe que o saldo da conta numero 1 foi alterado de R$ 1000,00 para R$ 1100,00, confirmando que o depósito foi efetuado com sucesso.


DESAFIO: Experimente fazer um depósito passando um valor negativo. A melhor forma de aprender uma Linguagem de Programação é praticando!

👣 Passo 05 - Implementar o Método Transferir

Na sequência, vamos implementar o Método Transferir, através do código abaixo:

Linha 90: Observe que na assinatura do Método, foram inseridos 3 parâmetros:

  • numeroOrigem: Número da conta que será efetuada a operação de Saque.
  • numeroDestino: Número da conta que será efetuada a operação de Depósito, ou seja, receberá a Transferência.
  • valor: O valor que será debitado da conta de origem e será creditado na conta de destino.

Linha 91: Antes de Efetuar o saque na conta de origem, precisamos verificar se a conta existe. Observe que foi criada a variável local contaOrigem, para receber o Objeto da Classe Conta, que foi encontrado na Collection listaContas.

Linha 92: Antes de Efetuar o depósito na conta de destino, precisamos verificar se a conta existe. Observe que foi criada a variável local contaDestino, para receber o Objeto da Classe Conta, que foi encontrado na Collection listaContas.

  • Linhas 94 a 102: Através do Laço Condicional, verifica se os dois Objetos Conta (conta origem e conta destino) foram encontrados (linha 94).
    • Se as 2 contas foram encontradas, um novo laço condicional será executado para checar se o saque na conta origem foi bem sucedido (linha 96). A operação saque será efetuada através do Método sacar(valor), do tipo boolean (verdadeiro ou falso).
    • Caso o saque tenha sido bem sucedido, o Método retornará o valor true (verdadeiro) .
    • Caso o Saque não seja bem sucedido (Saldo insuficiente), o próprio Método sacar(valor) exibirá uma mensagem indicando que o Saldo da conta é insuficiente.
    • Na sequência, a operação depósito será efetuada na conta destino, através do Método depositar(valor) (linha 97).
    • Se as 2 operações forem bem sucedidas, será exibida uma mensagem confirmando a transferência (linha 98).
    • Caso uma ou as duas contas não sejam encontradas (linha 101), será exibida na tela a mensagem informando que as contas não foram encontradas (linha 102).

Salve as alterações!

Para efetuar a transferência, precisamos receber os números das Contas de origem e destino, além do valor da transferência, via teclado. Para receber os dados via teclado, precisamos criar um "formulário" para receber os dados através dos Comandos de Entrada e Saída.


👣 Passo 06 - Inserir o Método Transferir na Classe Menu

Agora que implementamos o Método Transferir, vamos inserir uma chamada para este Método na Classe Menu:

Vamos criar o formulário da operação transferência e criar a chamada para o Método Transferir na Classe Menu

  1. Na Classe Menu, localize o trecho de código abaixo:
  1. Insira o trecho de código abaixo:

Linhas 209 a 212: Foi criada a entrada de dados, via teclado, para as variáveis numero e numeroDestino.

Linhas 214 a 217: Foi criado um Laço de repetição do...while, para garantir que a variável valor receba via teclado um numero positivo e maior do que zero.

Linha 219: Foi criada a chamada para o Método transferir(), criado na Classe ContaController. Na chamada do Método foram inseridos 3 parâmetros:

  • numero: Número da conta que será efetuada a operação de Saque.
  • numeroDestino: Número da conta que será efetuada a operação de Depósito, ou seja, receberá a Transferência.
  • valor: O valor que será debitado da conta de origem e será creditado na conta de destino.

Salve e Execute o projeto clicando no botão Run.

  1. Será aberto o Menu, que deve ser semelhante ao da figura abaixo:
  1. Digite a opção 6 (indicado com uma seta verde na imagem acima) e veja o resultado abaixo:
Transferência entre Contas

Digite o Numero da Conta de Origem: 
1
Digite o Numero da Conta de Destino: 
2
Digite o Valor da Transferência (R$): 
100

A Transferência foi efetuado com sucesso!

Pressione Enter para Continuar...

No exemplo acima fizemos uma transferência de R$ 100,00 da conta numero 1 para a conta numero 2 e uma mensagem de confirmação foi exibida na tela.

  1. Experimente repetir a operação na conta de origem numero 10:
Transferência entre Contas

Digite o Numero da Conta de Origem: 
10
Digite o Numero da Conta de Destino: 
2
Digite o Valor da Transferência (R$): 
100

A Conta de Origem e/ou Destino não foram encontradas!

Pressione Enter para Continuar...

Observe que a conta numero 10 não foi encontrada e uma mensagem foi exibida na tela.

Na sequência, vamos confirmar se a transferência da conta numero 1 para a conta numero 2 foi efetuada com sucesso:

  1. Digite a opção 3 (indicado com uma seta verde na imagem abaixo):
  1. No item numero da conta, digite o numero 1 e veja o resultado abaixo:
Consultar dados da Conta - por número

Digite o número da conta: 
1

*********************************************************************
Dados da Conta:
*********************************************************************
Numero da Conta: 1
Agência: 123
Tipo da Conta: Conta Corrente
Titular: João da Silva
Saldo: 900.0
Limite de Crédito: 100.0

Pressione Enter para Continuar...

Observe que o saldo da conta numero 1 foi alterado de R$ 1000,00 para R$ 900,00, confirmando que o saque foi efetuado com sucesso.

  1. Na sequência, vamos checar a conta numero 2 e veja o resultado abaixo:
Consultar dados da Conta - por número

Digite o número da conta: 
2

*********************************************************************
Dados da Conta:
*********************************************************************
Numero da Conta: 2
Agência: 124
Tipo da Conta: Conta Corrente
Titular: Maria da Silva
Saldo: 2100.0
Limite de Crédito: 100.0

Pressione Enter para Continuar...

Observe que o saldo da conta numero 2 foi alterado de R$ 1000,00 para R$ 1000,00, confirmando que a transferência foi efetuada com sucesso.


DESAFIO: Experimente fazer uma transferência com um valor maior do que o Saldo da conta de origem e uma outra transferência passando um valor negativo. No caso de uma Conta Corrente, lembre-se que o saldo é composto por: saldo + limite. A melhor forma de aprender uma Linguagem de Programação é praticando!