Fiche d`exercices N° 3 - Université Paris 1 Panthéon
Transcription
Fiche d`exercices N° 3 - Université Paris 1 Panthéon
UniversitéParis1–PanthéonSorbonne ISI5–ArchitectureOO-L3MIAGE 1 Fiched’exercicesN°3 Pourchaqueexerciceci-dessous,fournirlecodeJava,ainsiquelamodélisationUML(projetNetBeans& VisualParadigmcompactésurNom-FicheX-ExerciceY.zip). 1) Analyseretcorrigerlecodeci-dessous.Justifiervospositions. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 2 3 4 5 6 7 8 9 10 11 12 publicclassPanier{ privateArrayListproduits=newArrayList(); privateString[]livraison=null; publicvoidajouterProduit(StringcodeProd,StringnomProd,intqte,floatprixUnit){ this.produits.add(newProduit(codeProd,nomProd,prixUnit*qte)); } publicfloatcalculerPrix(){ floatprix=0; for(inti=0;i<produits.size();i++){ Produitp=(Produit)produits.get(i); prix+=p.getPrix(); } returnprix; } publicvoidsetLivraison(String[]adresse){this.livraison=adresse; } publicString[]getLivraison(){ returnthis.livraison; } publicvoidimprimer(){ System.out.println("Facture"); for(inti=0;i<produits.size();i++){ Produitp=(Produit)produits.get(i); System.out.println(p); } System.out.println("Prixtotal:"+this.calculerPrix()); } } publicclassProduit{ privateStringcode; privateStringnom; privatefloatprix; publicProduit(Stringc,Stringn,floatp){ code=c; nom=n; prix=p; } publicfloatgetPrix(){returnthis.prix; } publicStringtoString(){returncode+""+nom+""+prix+"€";} } UniversitéParis1–PanthéonSorbonne ISI5–ArchitectureOO-L3MIAGE 2 2) Faireuneapplicationdecontrôled’unvolumefictifaveclesdeuxvuesillustréesci-dessous: • Vue1:unchampdetextequiaffichelevolumecourantetpermetdemodifiercettevaleur • Vue2:unlabelquiaffichelevolume,avecdeuxboutons,unpourl’incrémenterd’unpointet l’autrepourladécrémenterd’unpoint Apartirdelaclasseproposée,répondreauxquestionssuivantes: a) Comment avez-vous géré l’information de volume? Cette information est-elle indépendantedurestantdel’application? b) Vos deux vues sont-elles synchronisées (lors qu’on modifie le volume sur une fenêtre celui-ci se met à jour sur l’autre)? Comment avez-vous fait pour qu’ils soient synchronisés? c) Serait-ilpossibled’insérerfacilementunenouvellevue?Quellesmodificationsdevriezvousapporteràvotrecodepourinsérerunetroisièmevue? Exercicesàrendre: 3) Créer une application graphique permettant de gérer un groupe d’étudiants. Chaquegroupe doit pouvoircontenirunensembled’objetsdelaclasseEtudiantréaliséeprécédemment.L’application doit permettre d’ajouter un nouvel étudiant (à travers une vue d’insertion) et d’afficher les étudiantsappartenantaugroupe(àtraversunevuedetypeliste). Apartirdel’applicationproposée,répondreauxquestionssuivantes: a) Avez-vous pu réutiliser les classes créées dans les exercices précédents sans les modifier?Quellesontétélesdifficultéspourlaréutilisationdecesclasses? b) Comment avez-vous organisé votre application? Les classes gérant les données sontellesindépendantesdescellesgérantl’affichage?Ya-t-ilunfaiblecouplageentreces classes?etentrelesvuesetleurscontrôleurs? c) Comment avez-vous fait pour garder la vue de type liste synchronisée par rapport à l’ajoutdenouveauxétudiantsdanslegroupe?