Genera clases de Java

Crea una interfaz y una implementación de clase en Java.

Puedes consultar un modelo directamente y probar los resultados que se muestran cuando usas valores de parámetros diferentes con la consola de Cloud o con una llamada directa a la API de Vertex AI.

Instrucciones del sistema

Eres un desarrollador sénior de Java que enseña a un desarrollador junior y deberás proporcionar un solo párrafo al final de tu respuesta para resumir el código generado.

Mensaje Freeform

En Java, genera dos clases: VenusCard y Card.

Card será una interfaz con los siguientes métodos: - 'int pay(int amount, String name)' - 'int withdraw(int amount)' - 'int deposit(int amount)'

VenusCard será una clase concreta que implemente la interfaz Card. Debe hacer lo siguiente: - Crear un recibo para el pago de alcance. - Incluye la lógica de pay() y withdraw() para agregar una tarifa del 5% a cualquier pago o retiro si el saldo es inferior a 0. - Si una transacción causaría que el saldo sea inferior al límite de sobregiro, se debe rechazar la transacción y mostrar -1.

Respuesta

// Define the Card interface
interface Card {
    int pay(int amount, String name);
    int withdraw(int amount);
    int deposit(int amount);
}

//VenusCard class that implements Card interface
import java.util.ArrayList;
import java.util.List;

class VenusCard implements Card {
    private int balance;
    private int overdraftLimit = -500; //Example overdraft limit
    private List<String> receipts;

    public VenusCard() {
        this.balance = 0;
        this.receipts = new ArrayList<>();
    }

    public int pay(int amount, String name) {
        if (amount <= 0) {
            return -1; // Reject invalid payment amounts.
        }
        if (balance - amount < overdraftLimit) {
            return -1; // Reject if transaction goes below overdraft limit.

        }
        balance -= amount;
        double fee = 0;
        if (balance < 0) {
            fee = amount * 0.05;
            balance -= fee;
        }
        receipts.add("Payment of " + amount + " to " + name + " made. Fee: " + fee);
        return amount;
    }


    public int withdraw(int amount) {
        if (amount <= 0) {
            return -1; //Reject invalid withdrawal amounts
        }
        if (balance - amount < overdraftLimit) {
            return -1; // Reject if transaction goes below overdraft limit
        }
        balance -= amount;
        double fee = 0;
        if (balance < 0) {
            fee = amount * 0.05;
            balance -= fee;
        }
        receipts.add("Withdrawal of " + amount + " made. Fee: " + fee);
        return amount;

    }

    public int deposit(int amount) {
        if (amount <= 0) {
            return -1; //Reject invalid deposit amounts.
        }
        balance += amount;
        receipts.add("Deposit of " + amount + " made.");
        return amount;
    }

    public int getBalance() {
        return balance;
    }

    public List<String> getReceipts() {
        return receipts;
    }

    public static void main(String[] args){
        VenusCard card = new VenusCard();
        System.out.println(card.deposit(1000));
        System.out.println(card.pay(500, "Store A"));
        System.out.println(card.getBalance());
        System.out.println(card.withdraw(800));
        System.out.println(card.getBalance());
        System.out.println(card.getReceipts());

    }
}

Resumen: El código implementa una interfaz Card que define las funciones básicas de la tarjeta (pago, retiro, depósito). La clase VenusCard implementa esta interfaz y agrega funciones como la generación de recibos, una tarifa del 5% en las transacciones cuando el saldo es inferior a cero y verificaciones del límite de sobregiro para evitar transacciones que generen un saldo inferior al límite de sobregiro definido. El método main proporciona un ejemplo sencillo del uso de la clase VenusCard. Se incluye el manejo de errores para rechazar los importes de transacciones no válidos (menores o iguales a cero).

Modelo: gemini-1.5-flash-002
Temperatura: 0.2
Cantidad máxima de tokens de salida: 8192
TopK: 40.0
TopP: 0.95