/* Fichier Ex1Cercle.java * class Cercle avec constructeurs et quelques méthodes * Exemple d'un tableau des cercles, méthodes * d'accès et de modification. Le tri du tableau * des cercles. * * * */ class Cercle { // champ privé : rayon private double rayon; // un constructeur public Cercle(double r) { rayon = r; } // un autre constructeur public Cercle() { rayon = 12.345; // par défaut } // calcul du périmètre d'un cercle public double perimetre() { return 2 * Math.PI * rayon; } // calcul de la surface d'un cercle public double surface() { return Math.PI * rayon * rayon; } // afficher les informations d'un cercle public void afficher(String message) { System.out.printf("%s : %7.1f %10.2f %8.2f\n", message, rayon, perimetre(), surface()); } // méthode d'accès public double getRayon() { return rayon; } // méthode de modification public void setRayon(double nouvRayon) { rayon = nouvRayon; } } public class Ex1Cercle { // afficher le contenu du tableau des cercles static void afficher(Cercle[] cer, int nbCercles, String message) { System.out.printf("\n\nContenu du tableau de %d cercles %s :\n", nbCercles, message); System.out.printf(" Rayon Périmètre Surface\n"); for ( int i = 0 ; i < nbCercles; i++) System.out.printf("%6.2f %8.2f %10.2f\n", cer[i].getRayon(), cer[i].perimetre(), cer[i].surface()); System.out.printf("\n\n"); } // une manière de trier un tableau des cercles // (tri par sélection vu avant l'intra) static void trier(Cercle[] cer, int nbCercles) { for (int i = 0; i < nbCercles-1; i++) { int indMin = i; for (int j = i+1; j < nbCercles; j++) if ( cer[j].getRayon() < cer[indMin].getRayon() ) indMin = j; if (indMin != i) { double tempo = cer[i].getRayon(); cer[i].setRayon ( cer[indMin].getRayon()); cer[indMin].setRayon(tempo); } } } // déterminer puis afficher le cercle ayant le rayon le plus grand static void chercherPlusGrandRayon(Cercle[] cer, int nbCercles) { int indMax = 0 ; for(int i = 1 ; i < nbCercles; i++) if ( cer[i].getRayon() > cer[indMax].getRayon()) indMax = i; cer[indMax].afficher("Cercle ayant le rayon le plus grand"); } public static void main(String[] args) { // instancier 3 cercles Cercle c1 = new Cercle(5.3), c2 = new Cercle(1.7), c3 = new Cercle(); c3.afficher("Infos du cercle c3"); System.out.printf("Le perimetre du cercle c2 : %.2f\n\n", c2.perimetre()); System.out.printf("La surface du cercle c1 : %.2f\n\n", c1.surface()); // exemple d'un petit tableau des cercles : Cercle[] cer = { new Cercle(5.3), new Cercle(4.7), new Cercle(1.6), new Cercle(10.4), new Cercle(5.2) } ; int nbCercles = cer.length; // doubler le rayon du 2ième cercle cer[1].afficher("Infos de cer[1] "); cer[1].setRayon( 2 * cer[1].getRayon()); cer[1].afficher("Infos de cer[1] après avoir doublé son rayon "); // forme 2 : Classe.méthode "static" Ex1Cercle.afficher(cer, nbCercles, "avant le tri") ; // ExCercle. est optionnel // quel est le cercle ayant le plus grand rayon chercherPlusGrandRayon(cer, nbCercles); trier(cer, nbCercles); afficher(cer, nbCercles, "apres le tri selon les rayons") ; } } /*Exécution: --------------------Configuration: -------------------- Infos du cercle c3 : 12,3 77,57 478,78 Le perimetre du cercle c2 : 10,68 La surface du cercle c1 : 88,25 Infos de cer[1] : 4,7 29,53 69,40 Infos de cer[1] après avoir doublé son rayon : 9,4 59,06 277,59 Contenu du tableau de 5 cercles avant le tri : Rayon Périmètre Surface 5,30 33,30 88,25 9,40 59,06 277,59 1,60 10,05 8,04 10,40 65,35 339,79 5,20 32,67 84,95 Cercle ayant le rayon le plus grand : 10,4 65,35 339,79 Contenu du tableau de 5 cercles apres le tri selon les rayons : Rayon Périmètre Surface 1,60 10,05 8,04 5,20 32,67 84,95 5,30 33,30 88,25 9,40 59,06 277,59 10,40 65,35 339,79 Process completed. */