package Cours2NotesExpress; // ********************************************************** // 2- Approche par objets // ********************************************************** // On commence par IDENTIFIER et NOMMER les CONCEPTS // que l'on manipule (phase de conception souvent réalisée avec un langage // de modélisation comme UML que nosu utiliserons ici comme support // sans trop l'approfondir // Un CONCEPT sera représenté par une CLASSE // Une classe regroupe et décrit des OBJETS/INSTANCES (extension) // présentant des données et des comportements similaires (intension) // // Une description de classe comprend ces éléments similaires : // - les données (attributs) // - les comportements (méthodes) // // ----------------------------------------------- // | CompteBancaire | NOM DE LA CLASSE // ----------------------------------------------- // | - numero : String | // | - solde : double | ATTRIBUTS // | - nomClient : String | // ----------------------------------------------- // | + initialiser(n:String, s:double, nc:String)| // | + afficher() | METHODES // | +ajouterInterets(t:double) | // ----------------------------------------------- public class CompteBancaire1 { // ********************************************************** // 3- Définition de la structure // ********************************************************** // 'private', qui correspond au '-' d'UML signifie // que seules les opérations de la classe CompteBancaire // pourront les manipuler private String numero; private double solde; private String nomClient; // Ces déclarations signifient qu'un OBJET formé en respectant le format // de la classe sera une structure complexe à 3 champs // avec les noms donnés ci-dessus. // Au départ des valeurs "par défaut" sont placées dans les champs. // Format d'un objet de la classe / d'une instance // |------------------| // | null | numero // |------------------| // | 0 | solde // |------------------| // | null | nomClient // |------------------| // // ********************************************************** // 4- Création d'objets et accès à leurs attributs // ********************************************************** // si on se place dans un main // on peut déjà créer des objets et accéder à leurs attributs // par la notation '.' public static void main(String[] a) { // 'new'est l'opérateur de création // cb1 est une variable qui contient // le chemin d'accès (l'adresse, le pointeur) // vers l'objet créé CompteBancaire1 cb1 = new CompteBancaire1(); // ___ |------------------| // cb1 | | | null | cb1.numero // | .---->| | // |__| |------------------| // | 0 | cb1.solde // |------------------| // | null | cb1.nomClient // |------------------| // On donne des valeurs aux attributs de l'objet de chemin cb1 // grâce à l'opérateur '.' cb1.nomClient = "Axel"; cb1.solde = 400; cb1.numero = "zz564"; // On obtient ce résultat (en première approximation) // // ___ |------------------| // cb1 | | | "Axel" | cb1.numero // | .---->| | // |__| |------------------| // | 400 | cb1.solde // |------------------| // | "zz564" | cb1.nomClient // |------------------| // Si on fait un autre objet accessible par une autre variable // on dispose de deux comptes bancaires CompteBancaire1 cb2 = new CompteBancaire1(); cb2.nomClient = "Bérénice"; cb2.solde = 500; cb2.numero = "XX34091"; // On obtient ce résultat (en première approximation) // // ___ |------------------| // cb2 | | | "Bérénice" | cb1.numero // | .---->| | // |__| |------------------| // | 500 | cb1.solde // |------------------| // | "XX34091" | cb1.nomClient // |------------------| // On peut même afficher le contenu des objets de la manière suivante // Ce sera fait de manière plus systématique dans la prochaine section du cours System.out.println(cb1.nomClient+" "+cb1.numero+" "+cb1.solde); System.out.println(cb2.nomClient+" "+cb2.numero+" "+cb2.solde); // Notez que l'on peut mettre n'importe quelle valeur dans les attributs // C'est pour cela qu'ils sont privés et que l'on va définir des // opérations de manipulation // Par exemple cb1 est très débiteur !!! // On pourrait vouloir interdire qu'une opération // hors de la classe CompteBancaire puisse le mettre dans cette situation cb1.solde = -10000; System.out.println(cb1.nomClient+" "+cb1.numero+" "+cb1.solde); } // fin du main } // fin de la classe // Pour continuer, reportez-vous au fichier CompteBancaire2