1
I am doing a work of the college in which I have to develop a banking system, for this I have 3 types of account (1 class for each type), therefore I want to use an array of generic objects. The problem is accessing the methods of objects contained in the array, in which the eclipse is asking for casting.
Main class:
import java.util.Scanner;
public class programa {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Object[] arrayContas = new Object[50];
Object elementoConta;
System.out.println("1. Gerente. \n");
System.out.println("2. Cliente. \n");
System.out.println("3. Sair. \n");
int opcao = input.nextInt();
switch(opcao)
{
case 1:
{
System.out.println("1. Criar nova conta. \n");
System.out.println("2. Vizualizar informações. \n");
opcao = input.nextInt();
switch(opcao)
{
case 1:
menuGerente.criarConta(arrayContas);
break;
case 2:
{
System.out.println("Digite o número da conta desejada: ");
int numeroDaConta = input.nextInt();
elementoConta = arrayContas[numeroDaConta];
elementoConta.print();
}
}
}
}
input.close();
}
}
Manager class:
import java.util.Scanner;
public class menuGerente {
public static Object criarConta(Object[] contas)
{
Scanner input = new Scanner(System.in);
int numeroConta = 0;
String correntista;
while(contas[numeroConta] != null)
{
numeroConta++;
}
System.out.println("Digite:\n 1 para conta simples.\n 2 para conta especial.\n 3 para conta poupança.\n");
int opcao = input.nextInt();
switch(opcao)
{
case 1:
{
System.out.printf("Digite o nome do correntsta: ");
correntista = input.nextLine();
System.out.println();
conta novaConta = new conta(correntista, numeroConta);
contas[numeroConta] = novaConta;
break;
}
case 2:
{
System.out.printf("Digite o nome do correntsta: ");
correntista = input.nextLine();
System.out.println();
System.out.printf("Digite o limite da conta: ");
int limite = input.nextInt();
System.out.println();
contaEspecial novaConta = new contaEspecial(numeroConta, correntista, limite);
contas[numeroConta] = novaConta;
break;
}
case 3:
{
System.out.printf("Digite o nome do correntsta: ");
correntista = input.nextLine();
System.out.println();
System.out.printf("Digite o rendimento da conta: ");
double rendimento = input.nextDouble();
System.out.println();
contaEspecial novaConta = new contaEspecial(numeroConta, correntista, rendimento);
contas[numeroConta] = novaConta;
break;
}
}
input.close();
return contas;
}
}
Type 1 account:
public class conta {
private int numeroConta;
private String senha = "0000";
private String nomeCorrentista;
protected double saldo = 0.0;
protected String tipo = "Simples";
//Construtor---------------------------------------------
public conta(String nomeCorrentista, int numeroConta)
{
this.numeroConta = numeroConta;
this.nomeCorrentista = nomeCorrentista;
}
//Getters---------------------------------------------------
int getConta()
{
return numeroConta;
}
String getCorrentista()
{
return nomeCorrentista;
}
double getSaldo()
{
return saldo;
}
//Métodos sacar, depositar e alterarSenha------------------------
void sacar(double saque)
{
if(Math.abs(saldo - saque) < 0)
{
saldo = saldo - saque;
System.out.println("Saque realizado com sucesso!");
}
else
{
System.out.println("Saldo Insulficiente!");
}
}
void depositar(double valor)
{
saldo = saldo + valor;
System.out.println("Depósito realizado com sucesso!");
}
void alteraSenha(String senhaAntiga, String senhaNova)
{
if(senhaAntiga.equals(senha))
{
senha = senhaNova;
System.out.println("Senha alterada com Sucesso!");
}
else
{
System.out.println("Senha antiga incorreta!");
}
}
//Print--------------------------------------------------------
void print()
{
System.out.printf("O nome do correntista é %s. \n", getCorrentista());
System.out.printf("O numero da conta é %d. \n", getConta());
System.out.printf("A conta é do tipo %s. \n", tipo);
System.out.printf("O saldo é de R$ %.2f. \n", getSaldo());
}
}
Type 2 account:
public class contaEspecial extends conta{
double limite;
public contaEspecial(int numeroConta, String nomeCorrentista, double limite)
{
super(nomeCorrentista, numeroConta);
tipo = "Especial";
this.limite = limite;
}
void sacar(double saque)
{
if(Math.abs(saldo - saque) < limite)
{
saldo = saldo - saque;
System.out.println("Saque realizado com sucesso!");
}
else
{
System.out.println("Saldo Insulficiente!");
}
}
void print()
{
System.out.printf("O nome do correntista é %s. \n", getCorrentista());
System.out.printf("O numero da conta é %d. \n", getConta());
System.out.printf("A conta é do tipo %s. \n", tipo);
System.out.printf("O saldo é de R$ %.2f. \n", getSaldo());
System.out.printf("O limite é de %.2f. \n", limite);
}
}
It has more things, but it is already very big kkkk.
"so I want to use a generic object array" - how so ? You can detail a little more what you mean by this statement ?
– Isac