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
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.
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.
- Crie as novas variáveis na Classe Menu, como mostra o trecho de código abaixo:
- 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
- Na Classe Menu, localize o trecho de código abaixo:
- 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 
- Será aberto o Menu, que deve ser semelhante ao da figura abaixo:
- 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.
- 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:
- Digite a opção 3 (indicado com uma seta verde na imagem abaixo):
- 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.
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.
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
- Na Classe Menu, localize o trecho de código abaixo:
- 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 
- Será aberto o Menu, que deve ser semelhante ao da figura abaixo:
- 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.
- 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:
- Digite a opção 3 (indicado com uma seta verde na imagem abaixo):
- 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! |
|---|
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.
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
- Na Classe Menu, localize o trecho de código abaixo:
- 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 
- Será aberto o Menu, que deve ser semelhante ao da figura abaixo:
- 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.
- 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:
- Digite a opção 3 (indicado com uma seta verde na imagem abaixo):
- 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.
- 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.
















Voltar