UniversitéParis1–PanthéonSorbonne ISI5–ArchitectureOO-L3MIAGE 1 Fiched’exercicesN°1 Pourchaqueexerciceci-dessous,fournirlecodeJava,ainsiquelamodélisationUML.Vouspouvez utiliserpourcelaVisualParadigm1. 1) Analyser le code ci-dessous: est-ilconformeauxcritèresdequalitésénoncésencours? Si non,critiqueretcorrigerlecode.Justifiervospositions. 1 2 3 4 5 6 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 publicclassEmploye{ Stringn,p; publicvoidaddnom(Strings){n=s;} publicStringgetnom(){returnn;} publicvoidsetnom(Strings){n=s;} publicStringgetprenom(){returnp;} floatsal;float[]pr; publicfloat[]getPrimes(){returnpr;} publicvoidsetPrimes(float[]primes){pr=primes;}; publicvoidsetSalaire(floats){this.sal=s;} publicfloatgetSalaire(){returnthis.sal;} publicfloatgetSalaireFinal(){ floats=sal; inti=0; for(;;){ if(pr.length==i)break; s+=pr[i++];} returns; } publicEmploye(){ Scannersc=newScanner(System.in); System.out.println("Nom?");n=sc.next(); System.out.println("Prénom?");p=sc.next(); sal=(float)1430.22;//smicen1/1/2013 } publicintcompareTo(Objecto){ if(o!=null){returnthis.n.compareTo(((Employe)o).n);} elsereturn0; } } UniversitéParis1–PanthéonSorbonne ISI5–ArchitectureOO-L3MIAGE 2 2) Définir une classe Etudiant, représentant une personne qui étudie au collègue. Comme n’importequellepersonne,unétudiantaucollègueaunnom,unprénom,untéléphoneet une adresse de contact. Il a aussi 4 notes au cours de l’année. On doit pouvoir calculer la moyenne de l’étudiant. Si cette moyenne est supérieure à 10, l’étudiant est ADMIS (résultat="admis"),sinonilestNONADMIS. Réaliser une application qui demande à l’utilisateur final les notes d’un étudiant et qui afficheensuites’ilestadmisoupas. 3) Modéliseretimplémenterunecalculetteavecdeuxopérations«+»et«-». 4) Etendrelaversion1delacalculette(exerciceprécédent),sansmodifierlecodeexistant,afin desupporterlesopérationsde«*»etde«/». Exercicesàrendre: 5) Construire une classe TableauObjets, représentant un tableau d’objets et respectant les indicationssuivantes: a. b. c. d. Lenombredecasesdoitêtrefixe,fourniparl’utilisateur(taille); L’accèsauxcasesestdirect,àpartirdeleurindice; Lesindicesdescasesvariententre0ettaille-1; L’utilisateur décide lui-même de comment remplir les cases et dans quelle ordre grâceauxindices; e. Letableaudoitpouvoircomporterdesobjetsjavaden’importequelleclasse,mais touslesobjetsdoiventapparteniràuneseuleetuniqueclasse; f. Ilestinterditd’utiliserlescollectionsdéfiniesdansjava.util.*(ArrayList,Vector…) Apartirdelaclasseproposée,répondreauxquestionssuivantes: a) b) c) d) Commentavez-vousfaitlagestiondescasesvides? Commentavez-vousgérélasuppressiond’unecase? Garantissez-vouslacontrainted’avoirunetaillequirestefixepourletableau? Comment avez-vous fait pour assurer que tous les objets appartiennent à la mêmeclasse? 6) Proposer une application qui teste les fonctionnalités de la classe TableauObjets et notamment la suppression d’un élément au centre du tableau et l’insertion d’objets de classesdistinctesdansunmêmetableau(parexemple,unobjetIntegeretunobjetString). Apartirdel’applicationproposée,répondreàlaquestionsuivante: a) La suppression d’un élément au centre du tableau est-elle différente de la suppression d’un élément au début (le premier) ou à la fin (le dernier) du tableau?Pourquoi? UniversitéParis1–PanthéonSorbonne ISI5–ArchitectureOO-L3MIAGE 3 1 Observations: • LemodèleUMLfournidoitcorrespondreaucodeJavaprésenté • Lorsqu’ilvousserademandéderendrel’exercice,vousdevezcompacterlatotalitéduprojet NetBeans(ycomprisleprojetVisualParadigm)dansunfichierzipportantvotrenometle numérodel’exercice.Exemple:Nom-Fiche1-Exercice1.zip • Lorsquedesquestionssontproposéesaveclesexercices,répondezàchaquequestiontout audébutducodeJavaproposéàl’aidedescommentaires(/*…*/).