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?