public class Main {
public static void main(String[] args) {
CartaoCredito meuCartao = new CartaoCredito("Eleazar Lima", "5555 6666 7777 8888", 3000.00);
// Exibindo resumo inicial
System.out.println("=== Situação Inicial do Cartão ===");
meuCartao.exibirResumo();
// Realizando compras
System.out.println("\n=== Realizando Compras ===");
meuCartao.realizarCompra(500.00);
meuCartao.realizarCompra(1200.00);
meuCartao.realizarCompra(1500.00); // Esta deve passar
meuCartao.realizarCompra(1000.00); // Esta deve falhar (ultrapassa o limite)
// Exibindo resumo após compras
System.out.println("\n=== Situação após Compras ===");
meuCartao.exibirResumo();
// Realizando pagamentos
System.out.println("\n=== Realizando Pagamentos ===");
meuCartao.realizarPagamento(800.00);
meuCartao.realizarPagamento(500.00);
meuCartao.realizarPagamento(2000.00); // Pagamento maior que a dívida
// Exibindo resumo final
System.out.println("\n=== Situação Final do Cartão ===");
meuCartao.exibirResumo();
}
}
public class CartaoCredito {
private String titular;
private String numeroCartao;
private double limite;
private double saldo;
// Construtor
public CartaoCredito(String titular, String numeroCartao, double limite) {
this.titular = titular;
this.numeroCartao = numeroCartao;
this.limite = limite;
this.saldo = limite; // Saldo disponível inicia igual ao limite
}
// Métodos getters
public String getTitular() {
return titular;
}
public String getNumeroCartao() {
return numeroCartao;
}
public double getLimite() {
return limite;
}
public double getSaldo() {
return saldo;
}
public double getSaldoDisponivel() {
return saldo;
}
// Método para realizar uma compra
public boolean realizarCompra(double valor) {
if (valor <= 0) {
System.out.println("Valor da compra deve ser positivo.");
return false;
}
if (valor > saldo) {
System.out.println("Saldo insuficiente para esta compra.");
return false;
}
saldo -= valor;
System.out.println("Compra de R$" + valor + " realizada com sucesso.");
return true;
}
// Método para realizar pagamento
public void realizarPagamento(double valor) {
if (valor <= 0) {
System.out.println("Valor do pagamento deve ser positivo.");
return;
}
double valorDevido = limite - saldo;
if (valor > valorDevido) {
System.out.println("Pagamento excede o valor devido. Apenas R$" + valorDevido + " será aplicado.");
saldo = limite;
} else {
saldo += valor;
System.out.println("Pagamento de R$" + valor + " realizado com sucesso.");
}
}
// Método para exibir resumo
public void exibirResumo() {
System.out.println("\n--- Resumo do Cartão ---");
System.out.println("Titular: " + titular);
System.out.println("Número do Cartão: " + numeroCartao);
System.out.println("Limite Total: R$" + String.format("%.2f", limite));
System.out.println("Saldo Disponível: R$" + String.format("%.2f", saldo));
System.out.println("Valor Gasto: R$" + String.format("%.2f", (limite - saldo)));
System.out.println("-----------------------\n");
}
}