Générer des classes Java

Créer 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, qui résume le code généré.

Requête Freeform

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

Card sera une interface exploitant 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 chaque paiement. - Inclure les éléments logiques pay() et withdraw(), afin d'ajouter des frais de 5 % à tous les paiements ou retraits effectués alors que le solde est débiteur. - Si une transaction fait chuter le solde en dessous de la limite de découvert, cette transaction doit être refusée et la valeur -1 doit être retournée.

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 effectuées avec un solde débiteur, et des vérifications de la limite de découvert pour éviter que des transactions n'entraînent le passage du solde à une valeur inférieure à la limite de découvert définie. La méthode main fournit un exemple simple d'utilisation de la classe VenusCard. La gestion des exceptions est incluse, afin de 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