/* Fichier ExPersonne.java * tapé et expliqué en classe * On a parlé aussi de this */ class Personne { private String nomPre ; private double taille ; public Personne(String nP, double taille) { this.nomPre = nP; // ce this est optionnel this.taille = taille; // ce this est obligatoire } public Personne(String nomPre) { this(nomPre, 1.73); } public Personne(String nP, int nbPied, int nbPouce) { this(nP, (nbPied + nbPouce /12.0) * 0.3048); } public boolean plusPetit(Personne autre) { return nomPre.compareTo(autre.nomPre) < 0; } public void afficher(String mess) { System.out.printf("%s %25s %6.2f\n", mess, nomPre, taille); } public double getTaille() { return taille; } public void setTaille( double nouvTaille) { taille = nouvTaille; } public Personne plusPetiteTaille(Personne autre) { if ( this.taille < autre.taille) return this; else return autre ; } } public class ExPersonne { static void afficher(Personne[] pers, int nbPers, String mess) { System.out.printf("Contenu du tableau des personnes %s :\n", mess); for(int i = 0; i < nbPers; i++) { System.out.printf("%6d) ", i); pers[i].afficher(""); } System.out.printf("\n\n"); } static void trier(Personne[] pers, int nbPers) { for(int i = 0; i < nbPers-1; i++) { int indMin = i; for(int j = i+1; j < nbPers; j++) if ( pers[j].plusPetit(pers[indMin])) // voir la méthode plusPetit dans Personne indMin = j; if (indMin != i) { Personne tempo = pers[i]; pers[i] = pers[indMin]; pers[indMin] = tempo; } } } static double tailleMaxi(Personne[] pers, int nbPers) { double maxi = Double.MIN_VALUE; for(int i = 0; i < nbPers; i++) if( pers[i].getTaille() > maxi) maxi = pers[i].getTaille(); return maxi; } public static void main(String[] args) { // déclarer et initialiser un petit tableau de 5 personnes: Personne[] pers = { new Personne("Belanger Nicole", 1.67), new Personne("Tremblay Jacques"), // 1.73 par défaut new Personne("Lachance Pierre", 5, 7 ), // 5 pieds 7 pouces new Personne("Paquette Denis", 1.75), new Personne("Arcand Pierrette", 1.62) }; int nbPers = pers.length; // afficher les infos de la première personne : pers[0].afficher("Infos de la pers[0]"); pers[0].setTaille( pers[0].getTaille() - 0.02); pers[0].afficher("Infos de la pers[0] après avoir réduit 2 cm à sa taille"); ExPersonne.afficher(pers, nbPers, "au début"); pers[0].plusPetiteTaille(pers[2]).afficher("Infos de la personne ayant la + petite taille"); System.out.printf("La taille maximale : %.2f mètre\n", tailleMaxi(pers, nbPers)); trier(pers, nbPers); // selon les noms et prénoms afficher(pers, nbPers, "après le tri selon nom et prénom"); } } /* Exécution: --------------------Configuration: -------------------- Infos de la pers[0] Belanger Nicole 1,67 Infos de la pers[0] après avoir réduit 2 cm à sa taille Belanger Nicole 1,65 Contenu du tableau des personnes au début : 0) Belanger Nicole 1,65 1) Tremblay Jacques 1,73 2) Lachance Pierre 1,70 3) Paquette Denis 1,75 4) Arcand Pierrette 1,62 Infos de la personne ayant la + petite taillle Belanger Nicole 1,65 La taille maximale : 1,75 mètre Contenu du tableau des personnes après le tri selon nom et prénom : 0) Arcand Pierrette 1,62 1) Belanger Nicole 1,65 2) Lachance Pierre 1,70 3) Paquette Denis 1,75 4) Tremblay Jacques 1,73 Process completed. */