Sistema bancário Java OO. como criar classe operações e classe movimento??
tenho um sistema bancário que contém as classes ContaCorrente e ContaPoupanca. Cada uma delas tem os métodos levantar e depositar. Preciso criar uma classe Operações aonde vou executar as operações das duas contas e uma classe movimento que vai guardar o histórico de todas operações (levantamento, deposito e transferencia) feitos nas contas.
Como faço, preciso da vossa ajuda…
Poderia mostrar as classes por favor???
Gostaria de colaborar
aqui tens todas classes já criadas estou precisar da classe movimento e operações.
package codigo;
import java.util.ArrayList;
public class Banco {
private String nome;
private ArrayList<Conta> contas = new ArrayList<Conta>();
private static int numContas;
public Banco(){
cadastrarUmaConta(new ContaCorrente(new Cliente("Eufânia"),20452.0));
cadastrarUmaConta(new ContaCorrente(new Cliente("Fátima"),20789.0));
cadastrarUmaConta(new ContaPoupanca(new Cliente("Gabriel"),632589.0));
cadastrarUmaConta(new ContaPoupanca(new Cliente("António"),2045288.0));
}
public void cadastrarUmaConta(Conta Conta){
contas.add(Conta);
numContas++;
}
package codigo;
import java.util.Date;
import java.util.ArrayList;
public class Cliente extends Pessoa {
// Atributos
//private String nome;
private String bi;
private ArrayList<Conta> contas=new ArrayList<Conta> ();
//Construtor com Parametros
public Cliente(String nome,String bi,Date dtnasc){
super (nome,bi,dtnasc);
}
public Cliente(String nome) {
super(nome);
}
public ArrayList<Conta>getContas(){
return contas;
}
public void cadastrarUmaConta(Conta c){
contas.add(c);
}
public void removerUmaConta(Conta c){
contas.remove(c);
}
}
package codigo;
import app.*;
import grafico.*;
import java.util.Random;
public abstract class Conta {
//Atributos
private int numero,pin,opcao ;
private String iban ;
private double saldo ;
private Cliente titular;
private double limite;
private Conta destino;
private Boolean isblock;
//private Conta numcontas;
//Construtor sem Parâmetro
public Conta(){}
//Construtor com Parâmetro.
public Conta (Cliente titular,double saldo){
//this.numero=numero;
//this.pin=pin;
this.saldo=saldo;
this.iban=iban;
this.titular=titular;
pin= 1000 +(new Random().nextInt(9000));
numero= 10000 +(new Random().nextInt(90000));
iban="AO06"+numero;
isblock=false;
//Random gerarIban = new Random();
this.titular=titular;
this.saldo=saldo;
}
//metodo
public void credito(double valor){
saldo+=valor;
}
public void debito (double valor){
if(valor<this.saldo+this.limite){
saldo-=valor;
Sistema.tela().msg("Podes levantar está dentro do limite!");
}else{
Sistema.tela().msg("Não Podes levantar está fora do limite!");
}
}
public void transfer_para(double valor,Conta destino) {
if (this.saldo> valor) {
this.debito(valor);
destino.credito(valor);
}else{
System.out.println("Saldo insuficiente");
}
}
public void alterarPin(int userPin){
if(validaPin(userPin)){
Sistema.tela().msg("Digite o Novo Pin: ");
int pinNovo=Sistema.teclado().getEntrada();
Sistema.tela().msg("Digite o Novamente o Pin: ");
if (pinNovo == Sistema.teclado().getEntrada()) {
pin=pinNovo;
Sistema.tela().msgln("Pin alterado com sucesso");
} else{
Sistema.tela().msgln("Pin nao alterado. ");
}
}
}
public double consultaSaldo (){
return saldo ;
}
String consultaIban(){
return iban ;
}
public boolean validaPin(int userPin){
if(pin!=userPin){
Sistema.tela().msgln("Pin Invalido");
return false;
}
return true;
}
public int getPin() {
return pin;
}
public void setPin(int pin){
this.pin=pin;
}
public String getTitular(){
return titular.getNome();
}
public void iniciar(){
int opcao;
do{
exibirMenu();
opcao = Sistema.teclado().getEntrada();
escolheOpcao (opcao);
} while(opcao!=5);
}
public void exibirMenu(){
Sistema.tela().msgln("\t Escolha a opção desejada: ");
Sistema.tela().msgln("1 - Consultar Extrato");
Sistema.tela().msgln("2 - Levantamento");
Sistema.tela().msgln("3 - Transferencia");
Sistema.tela().msgln("4 - Movimento da Conta");
Sistema.tela().msgln("5 - Sair\n");
Sistema.tela().msgln("Opção: "+this.opcao);
}
public void escolheOpcao(int opcao){
int i=0;
double valor;
switch (opcao){
case 1:
extrato();
break;
case 2:
if (i++ <=3){
Sistema.tela().msgln("Quanto deseja Levantar: ");
valor = Sistema.teclado().getEntrada();
this.debito(valor);
}else{
Sistema.tela().msgln("Limite do levantamento diários atingidos.\n");
}
break;
case 3:
Sistema.tela().msgln("Quanto deseja Transferir: ");
valor = Sistema.teclado().getEntrada();
this.debito(valor);
break;
case 5:
Sistema.tela().msgln("Sistema encerrado.");
break;
default:
Sistema.tela().msgln("Opção inválida");
}
}
public boolean equals (Conta contas ){
return (this.numero==contas.numero);
}
public void extrato(){
System.out.println("\n\n\tExtrato");
System.out.println("Numero da conta:"+this.numero);
System.out.println("Titular: " + titular.getNome());
System.out.println("Iban da conta: "+this.iban);
System.out.println("Saldo atual: "+this.saldo);
System.out.println("O pin atual é: "+this.pin);
System.out.println("O teu número é: "+this.numero);
}
}
package codigo;
public class ContaCorrente extends Conta{
private double taxaDeOperacao=0.5;
public ContaCorrente(Cliente titular,double saldo){
super(titular,saldo);
}
@Override
public void credito(double valor){
super.credito(valor);
calcularTaxa();
}
private void calcularTaxa()
{
super.debito(taxaDeOperacao);
}
public void debito(double valor){
super.debito(valor);
calcularTaxa();
}
public void transfer_para(Conta destino, double valor){
super.debito(valor);
destino.credito(valor);
calcularTaxa();
}
}
_________
package codigo;
public class ContaPoupanca extends Conta{
private double limite=500.0;
public ContaPoupanca(Cliente titular,double saldo){
super(titular,saldo);
}
@Override
public void credito(double valor){
super.credito(valor);
}
public void debito(double valor){
if((limite+consultaSaldo()>= valor)){
super.debito(valor);
System.err.println("consultasaldo="+ consultaSaldo());
}
}
public void transfer_para(Conta destino, double valor ){
if((limite+consultaSaldo()>= valor)){
super.debito(valor);
destino.credito(valor);
}
}
}
package codigo;
import java.util.Date;
public class Funcionario extends Cliente {
//Atributos
private double salario;
private Date dtContratacao;
//Métodos
// Construtor sem Parametro
public Funcionario(String nome,String bi,Date dtnasc, double salario,Date dtContratacao){
super(nome,bi,dtnasc);
this.salario=salario;
this.dtContratacao=dtContratacao;
}
public double calcularSalario(){
return salario;
}
}
package codigo;
import java.util.Date;
public class Pessoa {
// Atributos
private String bi,nome;
private Date dtnasc;
// Métodos
public Pessoa(String nome) {
this.nome = nome;
}
public Pessoa (String nome, String bi,Date dtnasc){
this.nome=nome;
this.bi=bi;
this.dtnasc=dtnasc;
}
public String getNome(){
return nome;
}
public String getBi(){
return bi;
}
public Date getDtnasc(){
return dtnasc;
}
public void setNome(String nome){
this.nome=nome;
}
public void setBi(String bi){
this.bi=bi;
}
}
package grafico;
import java.util.Scanner;
public class Teclado {
public Scanner entrada;
public Teclado(){
entrada =new Scanner(System.in);}
public int getEntrada(){
return entrada.nextInt();
}
}
package grafico;
public class Tela {
public void msg(String msg){
System.out.print(msg);
}
public void msgln(String msg){
System.out.println(msg);
}
}
por favor espero a vossa ajuda??
Cara voce fez tudo junto a parte grafica com a classe conta?
Reveja seu projeto…
a parte gráfica eu consigo dar conta.
e como eu deferia fazer da-me uma ideia a classe movimento e operações?
.
Achei interessante a maneira de programação utilizando o pacote Grafico.
Copie as classe para seus devidos pacotes, mas na class Conta está gerando o erro relacionado
com Sistema.tela().msg(“Podes levantar está dentro do limite!”);
Sistema o que representa uma class, pacote ou função??? A mensagem de erro que aparece é essa: Sistema cannot be resolved
Sou novo java e estava acompanhando o seu código e pude aprender muito com ele mas me perdi nisso:
package grafico;
import java.util.Scanner;
public class Teclado {
public Scanner entrada;
public Teclado(){
entrada =new Scanner(System.in);}
public int getEntrada(){
return entrada.nextInt();
}
}
,
package grafico;
public class Tela {
public void msg(String msg){
System.out.print(msg);
}
public void msgln(String msg){
System.out.println(msg);
}
}
,
Sistema.tela().msg("Não Podes levantar está fora do limite!");
e
Sistema.teclado().getEntrada();
com vc fez para acessar métodos dessa classe sem antes instanciar o objecto?