Générer des classes Java

Créez une interface et une implémentation de classe en Java.

Vous pouvez interroger un modèle directement et tester les résultats renvoyés lors de l'utilisation de différentes valeurs de paramètre en utilisant la console Cloud ou en appelant directement l'API Vertex AI.

Instructions système

Vous êtes un développeur Java expérimenté qui enseigne à un développeur débutant. Vous devez fournir un seul paragraphe à la fin de votre réponse résumant le code généré.

Requête Freeform

En Java, générez deux classes : VenusCard et Card.

Card sera une interface avec les méthodes suivantes : - 'int pay(int amount, String name)' - 'int withdraw(int amount)' - 'int deposit(int amount)'

VenusCard sera une classe concrète qui implémente l'interface Card. Elle doit effectuer les opérations suivantes : - Créer un reçu pour le paiement de la couverture. - Inclut la logique pay() et withdraw() pour ajouter des frais de 5 % à tous les paiements ou retraits si le solde est inférieur à 0. - Si une transaction fait chuter le solde en dessous de la limite de découvert, elle doit être refusée et renvoyer -1.

Réponse

// 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());

    }
}

Résumé : Le code implémente une interface Card qui définit les fonctionnalités de base de la carte (paiement, retrait, dépôt). La classe VenusCard implémente cette interface, en ajoutant des fonctionnalités telles que la génération de reçus, des frais de 5 % sur les transactions lorsque le solde est inférieur à zéro, et des vérifications de la limite de découvert pour empêcher les transactions qui entraîneraient un solde inférieur à la limite de découvert définie. La méthode main fournit un exemple simple d'utilisation de la classe VenusCard. La gestion des erreurs est incluse pour refuser les montants de transaction non valides (inférieurs ou égaux à zéro).

Modèle : gemini-1.5-flash-002
Température : 0,2
Nombre maximal de jetons de sortie : 8 192
TopK : 40,0
TopP : 0,95