Pessoal, fechei Java na faculdade e agora voltei a mecher para treinar, estou num nível bem básico ainda. Comecei a fazer aquele programinha de banco simples e tive dois problemas que tá ruim de entender, coloquei eles em comentário nos códigos abaixo.
Criei 3 classes.
Classe Conta:
import javax.swing.*;
public abstract class Conta {
private String nome;
private int conta;
private double saldo, salario, limite;
boolean verifLimite=false;
public Conta(String nome, int conta, double saldo, double salario, double limite){
setNome(nome);
setConta(conta);
setSaldo(saldo);
setSalario(salario);
setLimite(limite);
}
public void deposito(double deposito){
saldo += deposito;
}
public void retira(double retira){
if(getSaldo()>= retira)
saldo-=retira;
else
JOptionPane.showMessageDialog(null, "Saldo insuficiente");
}
public void setNome(String nome){
this.nome = nome.toUpperCase();
}
public void setConta(int conta){
this.conta = conta;
}
public void setSaldo(double saldo){
this.saldo = saldo > 0 ? saldo:0;
}
public void setSalario(double salario){
this.salario = salario > 0 ? salario:0;
}
public void setLimite(double limite){
if(this.limite <= getSalario()){
this.limite = limite;
verifLimite=true;
}else
while(verifLimite=false)
JOptionPane.showMessageDialog(null, "O Limite deve ser maior que o salario. Digite novamente.");
}
public String getNome(){
return nome;
}
public int getNumero(){
return conta;
}
public double getSaldo(){
return saldo;
}
public double getSalario(){
return salario;
}
public double getLimite(){
return limite;
}
}
Classe ContaCorrente:
import javax.swing.*;
public class ContaEspecial extends Conta{
private double limiteEsp;
/*tive que colocar este "limite" aqui por que se nao o Eclipse diz que o construtor está "indefinido", este é o primeiro problema, não entendi pq ele não aceita puxar só as outras variáveis e usar o limite desta classe normalmente.*/
public ContaEspecial(String nome, int conta, double saldo, double salario, double limiteEsp, double limite){
super(nome, conta, saldo, salario, limite);
setLimite(limiteEsp);
}
public void setLimite(double limite){
if(limite*3 <= getSalario()){
this.limiteEsp = limite;
verifLimite=true;
}else
while(verifLimite=false)
JOptionPane.showMessageDialog(null, "O valor do limite não pode ser 3x maior que o salario. Digite um novo valor limite.");
}
public double getLimite(){
return limiteEsp;
}
}
E o segundo problema está na terceira classe que criei, a classe Cartao:
import javax.swing.*;
public class Cartao extends Conta{
private String senha="abc123";
boolean verifSenha=false;
public Cartao(String nome,int conta, double saldo, double salario, double limite){
super(nome, conta, saldo, salario, limite);
setSenha(senha);
}
public void alteraSenha(double senha){
JOptionPane.showMessageDialog(null, "Siga os próximos passos para trocar sua senha.");
String confSenha = JOptionPane.showInputDialog("Insira a senha atual: ");
if(confSenha = getSenha()){ /*dá erro nesta linha: "Type mismatch: cannot convert from String to boolean" este é o segundo problema que não entendi.*/
String novaSenha = JOptionPane.showInputDialog("Insira a nova senha: ");
this.senha = novaSenha;
verifSenha = true;
}
else
while(verifSenha=false)
JOptionPane.showMessageDialog(null, "Senha atual inválida. Tente novamente.");
}
public void setSenha(String senha){
this.senha = senha;
}
public String getSenha(){
return senha;
}
}
se alguém puder me dar uma força…vlws