Académique Documents
Professionnel Documents
Culture Documents
Vous ne garderez comme mthodes publiques que celles utiles au fonctionnement du programme principal fourni
dans les corrigs.
Code donn:
class Erreurs {
s1.afficher();
s2.afficher();
class Score {
annee = a;
points = points;
System.out.println(
import java.util.Scanner;
class Pharmacie {
int choix = 0;
choix = menu();
switch (choix) {
case 1 :
achat(clients, medicaments);
break;
case 2 :
approvisionnement(medicaments);
break;
case 3 :
affichage(clients, medicaments);
break;
case 4:
quitter();
break;
default :
// switch-case.
choix = 0;
int choix = 0;
System.out.println();
System.out.println();
System.out.println("4 : Quitter");
return choix;
La pharmacie gre des clients et des mdicaments. Un client est caractris par un nom et un crdit. Le crdit
reprsente la somme que ce client doit la pharmacie. Le crdit peut tre ngatif si le client a vers plus d'argent
que le montant. Un mdicament est caractris par un nom (de type String ), un prix (de type double ) et un stock
(de type int ). Les mthodes complter auront les caractristiques suivantes:
achat(..) permet de traiter un achat fait par un client. l'achat porte sur un
Vous tes libre de dfinir, en plus de ces mthodes, toutes celles que vous
jugerez ncessaires.
Lors de la programmation, il vous est demand de respecter scrupuleusement les indications suivantes:
Exemple d'excution:
> java Pharmacie
1 : Achat de medicament
2 : Approvisionnement en medicaments
4 : Quitter
Nom du medicament?:
Aspiron
Donner la Quantite :
1 : Achat de medicament
2 : Approvisionnement en medicaments
4 : Quitter
1 : Achat de medicament
2 : Approvisionnement en medicaments
Nom du client?:
Malfichu
Nom du medicament?:
Aspiron
30.0
1 : Achat de medicament
2 : Approvisionnement en medicaments
4 : Quitter
1 : Achat de medicament
2 : Approvisionnement en medicaments
4 : Quitter
Nom du client?:
Palichon
Nom du medicament?:
Aspiron
1 : Achat de medicament
2 : Approvisionnement en medicaments
4 : Quitter
1 : Achat de medicament
2 : Approvisionnement en medicaments
4 : Quitter
Nom du client?:
Palichon
Nom du medicament?:
Rhinoplexil
1 : Achat de medicament
2 : Approvisionnement en medicaments
4 : Quitter
1 : Achat de medicament
2 : Approvisionnement en medicaments
4 : Quitter
Nom du client?:
Febril
Malfichu
Nom du medicament?:
Placebo
Aspiron
1 : Achat de medicament
2 : Approvisionnement en medicaments
4 : Quitter
1 : Achat de medicament
2 : Approvisionnement en medicaments
4 : Quitter
Programme termine!
Les corrigs proposs correspondent l'ordre des apprentissages : chaque corrig correspond la solution
laquelle vous pourriez aboutir au moyen des connaissances acquises jusqu' la semaine correspondante.
/**
*/
* @param c : le cercle
*/
if (c.estInterieur(x,y))
System.out.print("dans ");
else
System.out.print("hors de ");
System.out.println(nom);
}
/* Classe Cercle
*/
class Cercle {
//avec constructeur!
this.x = x;
this.y = y;
rayon = r;
* dans le cercle
*/
public boolean estInterieur(double unX, double unY) {
(unY-y) * (unY-y))
Exercice 3 revisit
class Geometrie {
/**
*/
if (isocele)
else
double x = 0;
double y = 0;
x = scanner.nextDouble();
y = scanner.nextDouble();
class Triangle {
/**
*/
p1 = point1;
p2 = point2;
p3 = point3;
longueur1 = p1.calculerDistance(p2);
longueur2 = p2.calculerDistance(p3);
longueur3 = p3.calculerDistance(p1);
}
/**
*/
/**
*/
|| longueur2 == longueur3
|| longueur3 == longueur1);
class Point {
private double x, y;
this.x = x;
this.y = y;
return y;
/**
*/
// paramtre.
double x1 = this.x;
double y1 = this.y;
double x2 = p.getX();
double y2 = p.getY();
return distance;
}
Les getters/setters inutiles ont disparu !
Cherchez l'erreur
1. Le programmeur a trop utilis le mot-cl private au point que l'on ne peut mme pas accder la mthode
constructeur depuis l'extrieur de la classe, ni la mthode afficher(). Il faut rendre ces deux mthodes
publiques en supprimant le mot-cl private.
2. Les variables d'instance (mais pas les variables locales) reoivent toujours des valeurs par dfaut. Si la
variable d'instance points n'est pas initialise, elle aura donc la valeur 0. Dans la mthode constructeur, il y a
une situation de shadowing o le paramtre a le mme nom que la variable d'instance. Il faut utiliser
l'objet this pour diffrencier les deux et ainsi affecter la valeur du paramtre points la variable
d'instance points.
/* Version corrige */
class Erreurs {
g1.afficher();
g2.afficher();
class Score {
// !!! this
this.points = points;
System.out.println(
Pharmacie
import java.util.Scanner;
class Pharmacie {
int choix = 0;
while (choix < 4) {
choix = menu();
switch (choix) {
case 1:
achat(clients, medicaments);
break;
case 2:
approvisionnement(medicaments);
break;
case 3:
affichage(clients, medicaments);
break;
case 4:
quitter();
break;
default:
choix = 0;
int choix = 0;
System.out.println();
System.out.println();
System.out.println("4 : Quitter");
choix = scanner.nextInt();
// se dbarasser du \n
scanner.nextLine();
return choix;
/**
* d'acheter un mdicament
*/
medicament.diminuerStock(quantite);
} else
/**
*/
static void approvisionnement(Medicament[] medicaments) {
// se dbarasser du \n
scanner.nextLine();
medicament.augmenterStock(quantite);
/**
*/
/**
Client c = null;
System.out.println("Nom du client?:");
while (!trouve) {
nom = scanner.nextLine();
if ((clients[i].getNom()).equals(nom)) {
trouve = true;
c = clients[i];
if (!trouve) {
return c;
/**
*/
Medicament m = null;
System.out.println("Nom du medicament?:");
while (!trouve) {
nom = scanner.nextLine();
if ((medicaments[i].getNom()).equals(nom)) {
trouve = true;
m = medicaments[i];
if (!trouve) {
return m;
paiement = scanner.nextDouble();
scanner.nextLine();
return paiement;
int quantite;
quantite = scanner.nextInt();
scanner.nextLine();
return quantite;
}
static void quitter() {
System.out.println("Programme termine!");
class Client {
this.nom = nom;
this.credit = credit;
return credit;
return nom;
}
}
class Medicament {
this.nom = nom;
this.prix = prix;
this.stock = stock;
return stock;
return prix;
return nom;
}
import java.util.Scanner;
class GestionPharmacie {
/**
*/
int choix = 0;
choix = menu();
switch (choix) {
case 1:
p.achat();
break;
case 2:
p.approvisionnement();
break;
case 3:
p.affichage();
break;
case 4:
quitter();
break;
default :
choix = 0;
int choix = 0;
System.out.println();
System.out.println();
System.out.println("4 : Quitter");
choix = scanner.nextInt();
}
return choix;
System.out.println("Programme termine!");
class Pharmacie1 {
this.clients = clients;
this.medicaments = medicaments;
return this.clients;
return this.medicaments;
/**
* Permet un client d'acheter un mdicament.
*/
medicament.diminuerStock(quantite);
} else {
/**
* mdicament connu.
*/
medicament.augmenterStock(quantite);
/**
* Affichage des stocks et des crdits de la pharmacie
*/
/**
*/
Client c = null;
System.out.println("Nom du client?:");
while (!trouve) {
nom = GestionPharmacie.scanner.nextLine();
if ((clients[i].getNom()).equals(nom)) {
trouve = true;
c = clients[i];
if (!trouve) {
return c;
/**
*/
Medicament m = null;
System.out.println("Nom du medicament?:");
while (!trouve) {
nom = GestionPharmacie.scanner.nextLine();
if ((medicaments[i].getNom()).equals(nom)) {
trouve = true;
m = medicaments[i];
if (!trouve) {
}
}
return m;
return GestionPharmacie.scanner.nextDouble();
return GestionPharmacie.scanner.nextInt();
class Client {
this.nom = nom;
this.credit = credit;
return credit;
return nom;
class Medicament {
this.nom = nom;
this.prix = prix;
this.stock = stock;
}
public int getStock() {
return stock;
return prix;
return nom;
}
Created Thu 23 Jan 2014 3:25 PM WET