package Cours2NotesExpress; // ********************************************************** // 5- Partie comportementale // ********************************************************** // les algorithmes spécifiques aux classes s'appellent des méthodes // Ils seront décrits sous le format ci-après. // Une SIGNATURE composée de : // // La LISTE DE PARAMETRES est formée ainsi : // ( param_1, param_2, ... param_n) // Un CORPS qui est un bloc d'instructions entre deux accolades : '{' '}' // // Comment désigner l'objet sur lequel la méthode est en cours d'application ? // On le fait par une pseudo-variable appelée 'this' // public class CompteBancaire2 { // Tout d'abord on remet la partie structurelle étudiée précédemment // en donnant des valeurs initiales quand celles données par défaut // ne nous conviennent pas private String numero = ""; // pour que la valeur par défaut soit une chaîne vide private double solde; // la valeur 0 donnée par défaut nous convient private String nomClient = "inconnu";// pour que la valeur par défaut soit "inconnu"; // ********************************************************** // 5-1 Constructeurs // ********************************************************** // Les constructeurs sont des méthodes qui servent à initialiser les objets // au moment de leur création. // Ils ont quelques particularités : // - ils n'ont pas de type de retour // - ils portent le même nom que la classe // - les valeurs des paramètres sont utilisées pour initialiser les attributs // Constructeur 1 : il permet d'initialiser le nom du client avec une valeur // passée en paramètre et le numéro avec une valeur par défaut public CompteBancaire2(String nomClient) { this.nomClient = nomClient; this.numero = "numéro non affecté"; } // Constructeur 2 : il permet d'initialiser le nom du client et le numéro avec // des valeurs passées en paramètres public CompteBancaire2(String nomClient, String numero) { this.nomClient = nomClient; this.numero = numero; } // ********************************************************** // 5-2 Accesseurs // ********************************************************** // Ce sont des méthodes d'accès qui seront nécessaires pour manipuler. // les attributs (privés) depuis des méthodes hors de la classe. // Ils vont souvent par paires. // - un accesseur en lecture pour connaître la valeur // sa forme est 'get' suivi du nom de l'attribut commençant par une majuscule // - un accesseur en écriture pour modifier la valeur // il permettra notamment de contrôler la manière dont on la modifie // sa forme est 'set' suivi du nom de l'attribut commençant par une majuscule public String getNumero() { return numero; } public void setNumero(String numero) { this.numero = numero; } public String getNomClient() { return nomClient; } public void setNomClient(String nomClient) { this.nomClient = nomClient; } public double getSolde() { return solde; } // Voici un exemple de contrôle de valeur // On utilise une instruction conditionnelle // il en existe deux formes // // - forme complète (deux branches) // // if (condition) // {bloc d'instructions exécutées si la condition est vraie} // else // {bloc d'instructions exécutées si la condition est fausse} // // - forme incomplète (une branches) // // if (condition) // {bloc d'instructions exécutées si la condition est vraie} // public void setSolde(double nouveauSolde) { if (nouveauSolde <0) {System.out.println("erreur : un solde ne doit pas être négatif");} else {this.solde = nouveauSolde;} } // Une classe comporte en général d'autres méthodes // La méthode toString() est une méthode ordinairement // présente dans toutes les classes. // Elle retourne une représentation de l'objet // sous forme d'une chaîne de caractères. public String toString() { return "Client : "+this.nomClient+ " Numéro : "+this.numero+" solde = "+this.solde; } // La méthode verseIntérêts a pour paramètre un taux d'intérêt (taux entre 0 et 1) // Elle modifie le solde en ajoutant des intérêts correspondant au taux // Elle ne retourne rien public void verseIntérêts(double taux) { this.solde = this.solde * (1+taux); } // L'appel de ces deux méthodes est présenté dans le main plus bas public static void main(String[] args) { // Appel du constructeur 1 // on doit respecter la liste de types de paramètres (String) CompteBancaire2 cb1 = new CompteBancaire2("Marie"); // On obtient ce résultat (en première approximation) // // ___ |---------------------| // cb1 | | | "Marie" | cb1.numero // | .---->| | // |__| |---------------------| // | 0 | cb1.solde // |---------------------| // |"numéro non affecté" | cb1.nomClient // |---------------------| // Appel du constructeur 2 // on doit respecter la liste de types de paramètres (String,String) CompteBancaire2 cb2 = new CompteBancaire2("Sarah","ZZZ34"); // On obtient ce résultat (en première approximation) // // ___ |---------------------| // cb2 | | | "Sarah" | cb2.numero // | .---->| | // |__| |---------------------| // | 0 | cb2.solde // |---------------------| // | "ZZZ34" | cb2.nomClient // |---------------------| // Appel de la méthode toString System.out.println("cb1 "+cb1.toString()); // on peut aussi écrire comme suit, toString est appelée implicitement System.out.println("cb1 "+cb1); System.out.println("cb2 "+cb2.toString()); // Modification des soldes cb1.setSolde(400); cb2.setSolde(500); System.out.println("cb1 "+cb1.toString()); System.out.println("cb2 "+cb2.toString()); // Appel de la méthode verseIntérêts cb1.verseIntérêts(0.01); cb2.verseIntérêts(0.05); System.out.println("cb1 "+cb1.toString()); System.out.println("cb2 "+cb2.toString()); } }