Na etapa anterior, implementamos as Classes Model ContaCorrente e ContaPoupanca como Heranças da Classe Conta.
Nesta etapa, vamos transformar a Classe Conta em uma Classe Abstrata. 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()
}
Conta <|-- ContaCorrente
Conta <|-- ContaPoupanca
- Abra a Classe Conta, localizada no Pacote conta.model:
- Adicione o modificador abstract na assinatura da Classe Conta, conforme indicado na imagem abaixo:
- O código completo da Classe Conta, você confere abaixo:
package conta.model;
public abstract class Conta {
private int numero;
private int agencia;
private int tipo;
private String titular;
private float saldo;
public Conta(int numero, int agencia, int tipo, String titular, float saldo) {
this.numero = numero;
this.agencia = agencia;
this.tipo = tipo;
this.titular = titular;
this.saldo = saldo;
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public int getAgencia() {
return agencia;
}
public void setAgencia(int agencia) {
this.agencia = agencia;
}
public int getTipo() {
return tipo;
}
public void setTipo(int tipo) {
this.tipo = tipo;
}
public String getTitular() {
return titular;
}
public void setTitular(String titular) {
this.titular = titular;
}
public float getSaldo() {
return saldo;
}
public void setSaldo(float saldo) {
this.saldo = saldo;
}
public boolean sacar(float valor) {
if(this.getSaldo() < valor) {
System.out.println("Saldo Insuficiente!");
return false;
}
this.setSaldo(this.getSaldo() - valor);
return true;
}
public void depositar(float valor) {
this.setSaldo(this.getSaldo() + valor);
}
public void visualizar() {
String tipo = "";
switch(this.tipo) {
case 1:
tipo = "Conta Corrente";
break;
case 2:
tipo = "Conta Poupança";
break;
}
System.out.println("\n\n***********************************************************");
System.out.println("Dados da Conta:");
System.out.println("***********************************************************");
System.out.println("Numero da Conta: " + this.numero);
System.out.println("Agência: " + this.agencia);
System.out.println("Tipo da Conta: " + tipo);
System.out.println("Titular: " + this.titular);
System.out.println("Saldo: " + this.saldo);
}
}Observe que a única alteração implementada na Classe Conta foi a adição do modificador abstract na assinatura da Classe.
Código fonte: Conta.java
Como a Classe Conta se tornou uma Classe Abstrata, não é possível instanciar Objetos desta Classe. Observe na imagem abaixo, que depois de salvar a Classe Conta, automaticamente a Classe Menu apresentou uma indicação de erro:
Para corrigir o erro, precisamos remover o Objeto da Classe Conta, que foi criado na Classe Menu, para testes.
- Abra a Classe Menu;
- Apague o Objeto da Classe Conta, que foi criado na Classe Menu, conforme indicado na imagem abaixo:
- O código completo da Classe Menu, você confere abaixo:
package conta;
import java.util.Scanner;
import conta.model.ContaCorrente;
import conta.model.ContaPoupanca;
import conta.util.Cores;
public class Menu {
public static Scanner leia = new Scanner(System.in);
public static void main(String[] args) {
int opcao;
// Teste da Classe Conta Corrente
ContaCorrente cc1 = new ContaCorrente(1, 123, 1, "José da Silva", 0.0f, 1000.0f);
cc1.visualizar();
cc1.sacar(12000.0f);
cc1.visualizar();
cc1.depositar(5000.0f);
cc1.visualizar();
// Teste da Classe Conta Poupança
ContaPoupanca cp1 = new ContaPoupanca(2, 123, 2, "Maria dos Santos", 100000.0f, 15);
cp1.visualizar();
cp1.sacar(1000.0f);
cp1.visualizar();
cp1.depositar(5000.0f);
cp1.visualizar();
while (true) {
System.out.println(Cores.TEXT_YELLOW + Cores.ANSI_BLACK_BACKGROUND + "*****************************************************");
System.out.println(" ");
System.out.println(" BANCO DO BRAZIL COM Z ");
System.out.println(" ");
System.out.println("*****************************************************");
System.out.println(" ");
System.out.println(" 1 - Criar Conta ");
System.out.println(" 2 - Listar todas as Contas ");
System.out.println(" 3 - Buscar Conta por Numero ");
System.out.println(" 4 - Atualizar Dados da Conta ");
System.out.println(" 5 - Apagar Conta ");
System.out.println(" 6 - Sacar ");
System.out.println(" 7 - Depositar ");
System.out.println(" 8 - Transferir valores entre Contas ");
System.out.println(" 9 - Sair ");
System.out.println(" ");
System.out.println("*****************************************************");
System.out.println("Entre com a opção desejada: ");
System.out.println(" ");
opcao = leia.nextInt();
if(opcao == 9) {
System.out.println("\nBanco do Brazil com Z - O seu futuro começa aqui!");
leia.close();
System.exit(0);
}
switch(opcao) {
case 1:
System.out.println("\n Criar Conta");
break;
case 2:
System.out.println("\n Listar todas as Contas");
break;
case 3:
System.out.println("\n Buscar Conta por número");
break;
case 4:
System.out.println("\n Atualizar dados da Conta");
break;
case 5:
System.out.println("\n Apagar Conta");
break;
case 6:
System.out.println("\n Sacar");
break;
case 7:
System.out.println("\n Depositar");
break;
case 8:
System.out.println("\n Transferir");
break;
default:
System.out.println("\nOpção Inválida");
break;
}
}
}
}-
O resultado, você confere abaixo:
********************************************************************* Dados da Conta: ********************************************************************* Numero da Conta: 2 Agência: 123 Tipo da Conta: Conta Corrente Titular: Mariana Saldo: 15000.0 Limite de Crédito: 1000.0 ********************************************************************* Dados da Conta: ********************************************************************* Numero da Conta: 2 Agência: 123 Tipo da Conta: Conta Corrente Titular: Mariana Saldo: 3000.0 Limite de Crédito: 1000.0 ********************************************************************* Dados da Conta: ********************************************************************* Numero da Conta: 2 Agência: 123 Tipo da Conta: Conta Corrente Titular: Mariana Saldo: 8000.0 Limite de Crédito: 1000.0 ********************************************************************* Dados da Conta: ********************************************************************* Numero da Conta: 3 Agência: 123 Tipo da Conta: Conta Poupança Titular: Victor Saldo: 100000.0 Aniversário da conta: 15 ********************************************************************* Dados da Conta: ********************************************************************* Numero da Conta: 3 Agência: 123 Tipo da Conta: Conta Poupança Titular: Victor Saldo: 99000.0 Aniversário da conta: 15 ********************************************************************* Dados da Conta: ********************************************************************* Numero da Conta: 3 Agência: 123 Tipo da Conta: Conta Poupança Titular: Victor Saldo: 104000.0 Aniversário da conta: 15 menu...
Observe que o Objeto da Classe Conta foi removido.






Voltar