ouvert_a_tous:slam2:tp4:sansheritage:programme_principal

Points Importants

    ArrayList repertoire = new ArrayList();

On peut y stocker n'importe quel type d'objet.

    repertoire.add(agent2);
    repertoire.add(lyc1);
    repertoire.add(elv1);
    repertoire.add(ensgnnt1);

Lors de l'affichage, il faut faire un transtypage (ou cast) explicite pour pouvoir appeler les méthodes spécifiques à l'objet récupéré dans la liste : la méthode get(i) renvoie un Object.

   Object o = prmListe.get(i);

On ne pourra pas écrire :

       String ch = o.getNom();

Car la méthode getNom() n'existe pas dans la classe Object.
Il faudra donc écrire :

   // La ligne suivante n'est pas nécessaire : elle n'est présente que pour montrer ce qui se passe
   // System.out.println("==========\no = " + o.getClass().getName());
    if (o.getClass() == Agent.class) {
         Agent a = (Agent) o;
         String ch = a.getNom() + " " + a.getPrenom();
         ......

Le code Complet

package tp4;
 
import java.util.ArrayList;
import tp4.commun.Adresse;
import tp4.commun.Commune;
import tp4.commun.Matiere;
import tp4.sansheritage.*;
 
 
public class ProgrammePrincipalSansHeritage {
 
    public static void main(String[] parametresChaines) {
        ArrayList repertoire = new ArrayList();
        Matiere matSi1 = new Matiere("SI1", "");
        matSi1.setLibelle("Solutions In... 1");
        Matiere matSlm1 = new Matiere("SLAM2", "");
        matSlm1.setLibelle("Solutions Logicielles... 2");
 
        Agent agent1 = new Agent("n_ag1", "p_ag1", new Adresse("1", "rue 1", "App1", new Commune("59000", "Lille")));
        agent1.setSpecialite("Plombier");
        Agent agent2 = new Agent("n_ag2", "p_ag2", new Adresse("2", "rue 2", "Entrée2", new Commune("06000", "Nice")));
        agent2.setSpecialite("Jardinier");
 
        Eleve elv1 = new Eleve("n_elv1", "p_elv1", new Adresse("3", "rue de Troyes", "", new Commune("02000", "Laon")));
        elv1.setLangueVivante1("Anglais");
        Eleve elv2 = new Eleve("n_elv2", "p_elv2", new Adresse("3", "rue d'Eu", "", new Commune("02000", "Laon")));
        elv2.setLangueVivante1("Espagnol");
 
        Enseignant ensgnnt1 = new Enseignant("n_ens1", "p_ens1", new Adresse("11", "rue de l'Ain", "", new Commune("59000", "Lille")));
        ensgnnt1.ajouter(matSi1);
        ensgnnt1.ajouter(matSlm1);
 
        Lycee lyc1 = new Lycee("Jean BART", new Adresse("2", "rue 2", "BP 1234", new Commune("59140", "Dunkerque")));
        lyc1.setCategorie("Lycée Polyvalent");
        Lycee lyc2 = new Lycee("de l'Europe", new Adresse("2", "rue du Banc Vert", "BP 5678", lyc1.getAdresse().getCommune()));
        lyc2.setCategorie("Lycée Général Scientifique et Technologique");
 
        Fournisseur frnssr1 = new Fournisseur("frnssr1");
        frnssr1.setAdresse(new Adresse("F1", "rue de L'an", "", new Commune("02000", "Laon")));
        frnssr1.setNumSIRET("123456");
 
        repertoire.add(agent1);
        repertoire.add(agent2);
        repertoire.add(lyc1);
        repertoire.add(elv1);
        repertoire.add(ensgnnt1);
        repertoire.add(lyc2);
        repertoire.add(elv2);
 
        System.out.println(repertoire);
        affichage(repertoire);
    }
 
    private static void affchgLgn(String prmLigne) {
        System.out.println("--------\n" + prmLigne);
    }
 
    // Affiche une adresse sur une seule ligne.
    private static String adresseUneLigne(Adresse pAdrss) {
        String ch = "";
        ch = pAdrss.getNumero() + " " + pAdrss.getAdresse1() + " ";
        ch = ch + pAdrss.getAdresse2() + " - " + pAdrss.getCommune().getCodePostal();
        ch = ch + " " + pAdrss.getCommune().getNom();
        return ch;
    }
 
    // Affiche une adresse sous forme "rectangulaire" (sur plusieurs lignes)
    private static String adresseEtiquette(Adresse pAdrss) {
        String ch;
        ch = pAdrss.getNumero() + " " + pAdrss.getAdresse1() + "\n" + pAdrss.getAdresse2() + "\n" + pAdrss.getCommune().getCodePostal()\\ 
                 + " " + pAdrss.getCommune().getNom();
        return ch;
    }
 
    private static void affichage(ArrayList prmListe) {
        // Parcours de la liste
        for (int i = 0; i < prmListe.size(); i++) {
            Object o = prmListe.get(i);
            System.out.println("==========\no = " + o.getClass().getName());
            if (o.getClass() == Agent.class) {
                Agent a = (Agent) o;
                String ch = a.getNom() + " " + a.getPrenom();
                ch = ch + " - " + adresseUneLigne(a.getAdresse());
                affchgLgn(ch + " : " + a.getSpecialite());
            } else {
                if (o.getClass() == Eleve.class) {
                    Eleve e = (Eleve) o;
                    affchgLgn(e.getNom() + " " + e.getPrenom() + " " + adresseUneLigne(e.getAdresse()) + " " + e.getLangueVivante1());
 
                } else {
                    if (o.getClass() == Enseignant.class) {
                        Enseignant ens = (Enseignant) o;
                        Matiere[] matrs = ens.getSesMatieres();
                        String ch = " - Matières : ";
                        for (int indMat = 0; indMat < ens.nombreDeMatieres(); indMat++) {
                            ch = ch  + matrs[indMat].getLibelle()+ " ";
                        }
                        affchgLgn(ens.getNom() + " " + ens.getPrenom() + " " + adresseUneLigne(ens.getAdresse()) + " " + ch);
                    } else {
                        if (o.getClass() == Lycee.class) {
                            Lycee lc = (Lycee) o;
                            affchgLgn(lc.getCategorie() + " " + lc.getNom());
                            affchgLgn(adresseEtiquette(lc.getAdresse()));
                        } else {
                            if (o.getClass() == Fournisseur.class) {
                                Fournisseur frnssr = (Fournisseur) o;
                                affchgLgn(frnssr.getNom() + " " + frnssr.getNumSIRET());
                                affchgLgn(adresseEtiquette(frnssr.getAdresse()));
                            }
                        }
                    }
                }
            }
        }
    }
}

Résultat de l'exécution du programme

[tp4.sansheritage.Agent@19106c7, tp4.sansheritage.Agent@540408, tp4.sansheritage.Lycee@1d4c61c, tp4.sansheritage.Eleve@1a626f, tp4.sansheritage.Lycee@34a1fc, tp4.sansheritage.Eleve@176c74b, tp4.sansheritage.Enseignant@116471f]
==========
o = tp4.sansheritage.Agent
--------
n_ag1 p_ag1 - 1 rue 1 App1 - 59000 Lille : Plombier
==========
o = tp4.sansheritage.Agent
--------
n_ag2 p_ag2 - 2 rue 2 Entrée2 - 06000 Nice : Jardinier
==========
o = tp4.sansheritage.Lycee
--------
Lycée Polyvalent Jean BART
--------
2 rue 2
BP 1234
59140 Dunkerque
==========
o = tp4.sansheritage.Eleve
--------
n_elv1 p_elv1 3 rue de Troyes  - 02000 Laon Anglais
==========
o = tp4.sansheritage.Lycee
--------
Lycée Général Scientifique et Technologique de l'Europe
--------
2 rue du Banc Vert
BP 5678
59140 Dunkerque
==========
o = tp4.sansheritage.Eleve
--------
n_elv2 p_elv2 3 rue d'Eu  - 02000 Laon Espagnol
==========
o = tp4.sansheritage.Enseignant
--------
n_ens1 p_ens1 11 rue de l'Ain  - 59000 Lille  - Matières : Solutions In... 1 Solutions Logicielles... 2 
  • ouvert_a_tous/slam2/tp4/sansheritage/programme_principal.txt
  • Dernière modification : 2022/12/03 07:45
  • de 127.0.0.1