import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.PrintStream; import java.util.StringTokenizer; import java.util.Vector; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; class Personne { String nom; String prenom; String tel; String mel; static int compteur; static String[] nomsDesChamps = {"Nom","Prénom","Téléphone","Courriel"}; static { System.out.println("Chargement de la classe Personne"); System.out.println("--Initialisation des attributs de classe"); System.out.println("--Aucune instance n'est creee"); compteur = 0; } public Personne() { this(null, null, null, null); // ATTENTION : que se passe-'il si on commente cette ligne ? System.out.println("Creation d'une nouvelle instance de la classe "+getClass().getName()); System.out.println("--Appel du constructeur par defaut"); } public Personne(String nom, String prenom, String tel, String mel) { System.out.println("Creation d'une nouvelle instance de la classe "+getClass().getName()); System.out.println("--Appel du constructeur complet"); this.nom = nom; this.prenom = prenom; this.tel = tel; this.mel = mel; System.out.println("--Incrementation du compteur de classe"); ++compteur; } static void getCompteur() { System.out.println("Nb d'instances de la classe Personne : "+compteur); } /** * Surcharge de toString définie dans la classe Object * Normalement affiche nom_classe@adresse_memoire * Je ne veux pas voir * ni return nom+prenom+tel+mel; * ni return (new StringBuffer(nom+prenom+tel+mel)).toString(); */ public String toString() { // Utilisation d'une StringBuffer qui est une chaine DYNAMIQUE StringBuffer sb = new StringBuffer(nom); sb.append(":"); sb.append(prenom); sb.append(":"); sb.append(tel); sb.append(":"); sb.append(mel); return sb.toString(); } } class Enfant extends Personne { } class Enfant2 extends Personne { public Enfant2() { System.out.println("###Enfant2####"); } } class Bizarroide { Personne p = new Personne("Bizarroide", null, null, null); public Bizarroide() { this(null); System.out.println("Construction Bizarroide"); //p = new Personne("Bizaroide2", null, null, null); } public Bizarroide(String s) { System.out.println("Construction Bizarroide avec param"); } } public class AgendaApp { /** * @param args */ public static void main(String[] args) { System.out.println("Debut de programme Agenda"); Bizarroide b = new Bizarroide(); Bizarroide b2 = new Bizarroide(); Personne personne = null; System.out.println("Petite remarque..."); Personne.getCompteur(); personne = new Personne("Yon", "Loic", "0473405042", "loic AT isima DOT fr"); Personne.getCompteur(); System.out.println(personne.toString()); System.out.println("Essai d'héritage..."); Enfant en =new Enfant(); // Hyper interessant !! System.out.println("Enfant2"); Enfant2 en2 = new Enfant2(); System.out.println("Fin d'essai"); Personne[] pers = new Personne[6]; pers[0] = personne; pers[1] = new Personne("Mahey", "Philippe", "0473405000", "mahey AT isima DOT fr"); pers[2] = new Personne("Gouinaud", "Christophe", "0473405041", "gouinaud AT isima DOT fr"); pers[3] = new Personne("Closset", "Martine", "0473405000", "martine POINT closset AT isima DOT fr"); pers[4] = new Personne("Peymaud", "Corinne", "0473405035", "peymaud AT isima DOT fr"); pers[5] = new Personne("Toledo", "Françoise", "0473405000", "toledo AT isima DOT fr"); try { File fichier = new File("donnees.txt"); FileOutputStream fos = new FileOutputStream(fichier); PrintStream ps = new PrintStream(fos); for (int i=0; i personnes; DefaultTableModel modele; public Agenda() { System.out.println("Cr\u00e9ation d'une instance de Agenda"); modele = new DefaultTableModel(Personne.nomsDesChamps,0); personnes = new Vector(); } public void lire(String nomFichier) { BufferedReader br; try { br = new BufferedReader(new FileReader(nomFichier)); String lecture; String[] donnees = new String[4]; while ((lecture = br.readLine())!=null) { StringTokenizer st = new StringTokenizer(lecture,":"); donnees[0] = st.hasMoreElements()?st.nextToken():""; donnees[1] = st.hasMoreElements()?st.nextToken():""; donnees[2] = st.hasMoreElements()?st.nextToken():""; donnees[3] = st.hasMoreElements()?st.nextToken():""; personnes.addElement(new Personne(donnees[0], donnees[1], donnees[2], donnees[3])); modele.addRow(donnees); } br.close(); } catch (Exception e) { e.printStackTrace(); } } public DefaultTableModel getModele() { return modele; } }