/** Auteur: Mohamed Lokbani cet exemple présente l'utilisation des constructeurs et de la fonction de recopie. jusqu'à maintenant pour initialiser les champs, nous avons utilisé une méthode donnée (initialise). question: peux-t-on utiliser une méthode qui permet à la fois de créer l'objet et d'initialiser ses champs? réponse: oui. Pour ce faire, il faudra utiliser les constructeurs. remarques: le constructeur porte le nom de la classe il ne retourne rien (ne pas mettre void) il peut y en avoir x nombres de constructeurs pas de limite. toute classe a un constructeur par défaut, représenté par: nom_classe() il cesse d'exister si vous définissez au moins un constructeur dans votre classe. */ class compte{ // Définition des champs String nom; double actif; int limite; // limite de crédit // Définition des méthodes // constructeur dont les arguments vont servir à initialiser // les champs données de la classe. // vous pouvez avoir un constructeur avec ou sans arguments. public compte(String monnom,double monactif,int malimite){ nom = monnom ; actif = monactif ; limite = malimite ; } /* si je veux recopier un objet dans un autre. Si A & B sont deux objets du type compte, alors l'opération A=B réalise une copie superficielle de l'objet B dans A. Si vous voulez faire une copie profonde, vous devez définir une méthode spéciale. en java il existe une méthode pour le faire: la méthode "clone". Ca sort du cadre de ce cours. */ public compte copie(){ // on crée un objet et on retourne sa référence compte X = new compte(nom,actif,limite); return X; } // plus vraiment besoin vu que nous avons maintenant un constructeur // à notre disposition void initialise(){ nom = ""; actif = 0.0; limite = 2000; } double depot(double argent){ actif += argent; return actif; } void affiche() { System.out.println("nom de la personne: " + nom); System.out.println("actif de son compte: " + actif); System.out.println("limite de crédit: " + limite); } } public class Testcompte1 { public static void main(String [] args){ //a.initialise(); // avant compte a = new compte("toto",99,5000); // maintenant avec le constructeur compte b = a.copie(); // on copie l'objet a dans b. a.depot(50); a.affiche(); } }