Page 1
JAVA : Premiers objets
Exercice 1 : Création et utilisation de crayons
a) Créer un programme Java qui permet à l’utilisateur de saisir la longueur et le diamètre d’un crayon et d’afficher son volume.
Exemple de résultat à obtenir :
>java Crayon1 Saisir une longueur 8
Saisir un diametre 0.85
Le volume du crayon = 4.5373
public class Crayon1 {
public static void main(String [] args){
System.out.println("Saisir une longueur ");
int longueur = Lire.lireInt();
System.out.println("Saisir un diametre ");
double diametre = Lire.lireDouble();
double rayon = diametre / 2;
double surface = 3.14 * rayon * rayon;
double volume = surface * longueur;
System.out.println("Le volume du crayon = "+volume);
} }
b) Créer la classe Crayon avec ses 2 propriétés « longueur » et « diamètre ». Pour le moment, les propriétés ne sont pas privées et la classe Crayon ne dispose pas de méthode.
public class Crayon { int longueur;
double diametre;
}
c) Créer un programme Java « UtiliseCrayon.java » qui permet à l’utilisateur de créer 2 crayons de longueurs différentes et d’afficher les propriétés de chacun.
public class UtiliseCrayon {
public static void main(String [] args){
Crayon c1= new Crayon();
c1.longueur=4;
c1.diametre=0.5;
System.out.println("Adresse du crayon:"+c1.toString());
System.out.println("Longueur du crayon:"+c1.longueur);
System.out.println("Diametre du crayon:"+c1.diametre);
} }
d) Grâce au mot clé « private », indiquez maintenant que les propriétés de « Crayon » sont privées. Que fait votre programme « UtiliseCrayon » ?
Il y a erreur de compilation car les attributs sont privés.
e) Pour pouvoir créer des crayons avec des propriétés différentes, créer un constructeur « Crayon » qui reçoit 2 paramètres « lg » et « diam ». Grâce à votre programme « UtiliseCrayon », créez 2 crayons différents et afficher leurs propriétés.
Exemple de résultat à obtenir :
>java UtiliseCrayon
Proprietes du premier crayon:
diametre=0.5 longueur=5
Proprietes du second crayon:
diametre=0.8 longueur=7
Page 2 public Crayon (int longu , double diam) {
this.longueur = longu;
this.diametre = diam;
}
f) Créer la méthode publique « affiche » de la classe « Crayon » et modifiez votre programme « UtiliseCrayon » pour afficher les propriétés de vos 2 crayons.
public void affiche() {
System.out.println("diametre=" + diametre);
System.out.println("longueur=" + longueur);
}
Essayez de définir la méthode « affiche » privée. Que se passe t-il quand vous essayez d’utiliser vos crayons ? On en peut plus utiliser la méthode affiche() car elle est privée : Erreur de compil
g) Créer la méthode privée « donneVolume » de la classe « Crayon » et apportez les modifications nécessaires pour qu’un appel de la méthode « affiche() » affiche maintenant à la fois la longueur, le diamètre et le volume du crayon.
private void affiche(){
System.out.println("diametre=" + diametre);
System.out.println("longueur=" + longueur);
System.out.println("volume=" + donneVolume());
}
private double donneVolume() { double pi = 3.14;
double r = diametre/2;
double volume = pi*r*r*longueur;
return volume;
}
h) Votre crayon est usé ! Il faut donc le tailler ! Tailler un crayon consiste à diminuer sa longueur de quelques millimètres. Créer la méthode publique « taille » qui reçoit en argument le nombre de millimètres à tailler.
Avec votre programme « UtiliseCrayon », tailler vos crayons et afficher les nouvelles caractéristiques de vos crayons.
Exemple
…/…
leCrayon.taille(10); // Taille le crayon d’un centimètre leCrayon.affiche(); // La longueur du crayon va être 1 cm plus courte
…/…
public void taille(int longueur) {
this.longueur = this.longueur - longueur;
}
i) Modifiez votre méthode « taille » pour interdire d’avoir des crayons de longueur négative. Forcez dans ce cas la longueur à zéro.
public void taille(int longueur) {
this.longueur = this.longueur - longueur;
if (this.longueur < 0){
this.longueur = 0;
} }
Page 3 Exercice 2 : un objet « Telecarte50 »
Voici la classe Telecarte50 :
T elecarte50 - unites : int +
+
getUnites () debiterUnites (int n)
: int : void
Une instance de cette classe sera un objet : une carte téléphonique de 50 unités.
Le nombre d’unité restantes est contenu dans la propriété unites. A la création de l’objet, cette propriété a pour valeur 50.
La méthode « getUnites » retourne le nombre d’untiés restantes.
La méthode « debiterUnites » debite la carte du nombre d’unités passées en paramètres.
a) Créer la classe Telecarte50.
b) Créer un programme Java « UtiliseTelecarte.java » qui :
• Crée une télécarte
• Affiche le nombre d’unités de la télécarte
• Demande à l’utilisateur s’il veut téléphoner
• S’il répond « OUI », demande à l’utilisateur le nombre d’unités consommées
• Débite le nombre d’unités de la télécarte si cela est possible sinon affiche un message d’erreur
• Affiche le nombre d’unités restantes.
public class Telecarte50 { private int unites = 50;
public int getUnites() { return unites;
}
public void debiterUnites(int n) { unites = unites - n;
}
public class UtiliseTelecarte {
public static void main(String args[]){
Telecarte50 laTelecarte = new Telecarte50();
System.out.println("La telecarte dispose de " + laTelecarte.getUnites() + " unites");
System.out.println("Voulez-vous telephoner ?");
char rep = Lire.lireChar();
if (rep == 'O'){
System.out.println("Nb unites consommees:");
int nb = Lire.lireInt();
if ((laTelecarte.getUnites() - nb) >= 0){
laTelecarte.debiterUnites(nb);
} else{
System.out.println("Solde insuffisant");
} }
System.out.println("Il vous reste " + laTelecarte.getUnites() + " unites");
} }