Génie Logiciel - Java (IGL245)
Thème :
Junior
1 vues ·4/10 leçons

7. Membres Statics

Attributs et méthodes statiques :

  • Les membres static appartiennent à la classe elle-même et non aux instances (objets).
  • Ils sont partagés par toutes les instances.
  • Ils sont accessibles via le nom de la classe (ex: Math.PI).
public class Utilitaires {
    public static int compteur = 0;

    public static void incrementer() {
        compteur++;
    }
}

// Accès sans instanciation
Utilitaires.incrementer();
System.out.println(Utilitaires.compteur);

8. Gestion des exceptions

Pourquoi gérer les exceptions ? Pour anticiper et traiter les erreurs d’exécution (ex : division par zéro, accès à un fichier inexistant) sans faire planter brutalement le programme.

Blocs try-catch-finally :

try {
    // Code susceptible de générer une exception
    int result = 10 / 0;
} catch (ArithmeticException ex) {
    // Intercepter et traiter l'exception
    System.out.println("Erreur : " + ex.getMessage());
} finally {
    // S'exécute toujours (utile pour fermer des fichiers/connexions)
    System.out.println("Bloc finally exécuté.");
}
  • Propagation : On peut utiliser le mot-clé throws dans la signature d’une méthode pour indiquer qu’elle peut générer une exception et laisser l’appelant la gérer.

Exercice 4 : Encapsulation et Gestion des Exceptions

Objectif : Créer une classe CompteBancaire avec un attribut solde. Ajouter des méthodes deposer(double montant) et retirer(double montant). La méthode retirer doit lever une exception personnalisée SoldeInsuffisantException si le solde est insuffisant.

Solution :

// Exception personnalisée
class SoldeInsuffisantException extends Exception {
    public SoldeInsuffisantException(String message) {
        super(message);
    }
}

// Classe CompteBancaire
public class CompteBancaire {
    private double solde;

    // Constructeur
    public CompteBancaire(double soldeInitial) {
        this.solde = soldeInitial;
    }

    public void deposer(double montant) {
        if (montant > 0) {
            solde += montant;
            System.out.println("Dépôt de " + montant + " effectué.");
        }
    }

    public void retirer(double montant) throws SoldeInsuffisantException {
        if (montant > solde) {
            throw new SoldeInsuffisantException("Solde insuffisant pour retirer " + montant);
        }
        solde -= montant;
        System.out.println("Retrait de " + montant + " effectué.");
    }

    public double getSolde() {
        return solde;
    }

    public static void main(String[] args) {
        CompteBancaire compte = new CompteBancaire(1000);
        compte.deposer(200);
        try {
            compte.retirer(1500); // Va échouer
        } catch (SoldeInsuffisantException ex) {
            System.out.println("Erreur : " + ex.getMessage());
        }
        System.out.println("Solde final : " + compte.getSolde());
    }
}

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur 7. Membres Statics. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.