Programmation Objet Java - Cours I - Exercices - Page 1
Programmation Objet en Java- Cours I
Exercices
Auteur : E.Thirion - Dernière mise à jour : 23/01/2017
Les exercices suivants sont des projets à complèter dont 'interface graphique est déjà réalisée, ce qui vous
permettra un gain de temps important. Ces projets sont disponibles par téléchargement. Pour savoir
comment y accéder cliquez ici.
Le téléchargement vous permettra également d'obtenir les corrigés des exercices (les mêmes projets
complets et fonctionnels).
D'autre part, ce document fait partie d'un ensemble de cours du même auteur (programmation procédurale
et objet, programmation web, bases de données) auxquels vous pouvez accéder en cliquant ici.
Exercice 1 : La classe Conducteur
Projet: Exo-Java-ProgObjet1/Conducteur1
Fenêtre de l'application Composants
Liste
LS_Boisson
Champs de texte
CT_Nom
CT_HC (heures de conduite)
CT_Alcool
Notez que cette fenêtre utilise un composant liste pour sélectionner la boisson. Comme nous n'avons pas
encore expliqué comment utiliser ce type de composant dans le cours, le code permettant d'accéder à la
boisson sélectionnée est déjà écrit dans le projet à complèter.
Objectif
Ce projet simule un mauvais exemple de conducteur, qui se permet de consommer de l'alcool avant de
conduire. Plus il boit, plus son degré d'alcool dans le sang augmente, et plus il a de chance d'avoir un
accident. S'il a un accident, il meurt nécessairement.
Bien entendu, s'il est mort, il ne peut plus boire, ni rouler. Pour continuer la simulation, il est alors nécessaire
de créer un nouveau conducteur.
Programmation Objet Java - Cours I - Exercices - Page 2
Description de la classe Conducteur
Nous allons représenter le conducteur par une instance d'une classe nommée Conducteur.
Les attributs de cette classe sont les suivants:
Nom : chaine de caractères contenant le nom du conducteur.
Alcool : degré d'alcool dans le sang (nombre pas forcément entier).
Conduite : heures de conduites (nombre entier).
Mort : booléen indiquant si le conducteur est mort.
Et voici les méthodes:
AfficherAttributs : affiche le nom, les heures de conduites et le degré d'alcool dans le sang d'un
conducteur.
Boire : augmente le degré d'alcool dans le sang d'un conducteur en fonction de la boisson
absorbée. Le numéro de la boisson est passé en paramètre.
Accident : fonction aléatoire retournant la valeur vraie si le conducteur a eu un accident.
Rouler : incrémente nombre d'heures de conduite du conducteur, sauf s'il est mort ou s'il a eu un
accident.
Question 1 : Le bouton "Créer un Nouveau Conducteur"
Lorsque l'utilisateur clique sur ce bouton, une instance de la classe Conducteur est générée avec le nom
donné. L'adresse de ce nouvel objet est ensuite mémorisée dans une variable globale ( LeConducteur ) de
type Conducteur, puis ses attributs sont affichés.
Pour faire fonctionner ce bouton, il vous faudra donc d'abord écrire une première version de la classe
Conducteur, puis déclarer la variable globale LeConducteur.
La première version de la classe contiendra:
la déclarations des attributs
un constructeur prenant en paramètre le nom du conducteur.
la méthode AfficherAttributs.
Précisons qu'un nouveau conducteur est vivant. Son degré d'alcool dans le sang est nul et il a ro heures
de conduite.
Après avoir écrit la déclaration de la classe Conducteur et de la variable LeConducteur, vous complèterez
le code de la procédure évènementielle associée au bouton Nouveau Conducteur afin d'obtenir l'effet
souhaité.
Règles du jeu: utiliser la méthode AfficherAttributs pour l'affichage des attributs du conducteur et le
constructeur de la classe pour initialiser ses attributs.
Question 2 : Le bouton "Boire"
Lorsque l'utilisateur clique sur ce bouton, le degré d'alcool du conducteur augmente en fonction de la
boisson sélectionnée (bière +0.2 , vin +0.4, whisky +0.8) sauf bien sur, si le conducteur est mort, auquel cas
un message d'erreur est affiché mentionnant le nom du conducteur.
Programmation Objet Java - Cours I - Exercices - Page 3
L'instruction permettant de récupérer le nom de la boisson sélectionnée à partir de la liste figure déjà dans
la procédure évènementielle associée à ce bouton :
Boisson = LS_Boisson.getSelectedIndex()+1;
Cette instruction récupère le numéro de la boisson sélectionnée (1 = Bière, 2 = Vin, 3 = Whisky, 4 = Eau, -1
= aucune boisson sélectionnée).
Il vous faudra donc complèter la classe Conducteur avec la méthode Boire, puis la procédure
évènementielle du bouton boire (en utilisant obligatoirement la méthode Boire).
Question 4 : Le bouton "Rouler"
Ce qui se passera lorsque l'utilisateur cliquera sur ce bouton dépend de l'état du conducteur:
s'il est mort, il ne peut évidemment pas rouler.
s'il est vivant, on essaiera de le faire rouler une heure. Mais il peut avoir un accident (forcément
mortel ).
Dans le code de la procédure évènementielle associée vous ne mettrez qu'une seule instruction: l'application
de la méthode Rouler au conducteur.
Comme la méthode Rouler utilise la méthode Accident, pour faire fonctionner ce bouton, il vous faudra
donc écrire ces deux méthodes. Commencons par la méthode Accident.
La méthode Accident
Rappelons, que la méthode Accident est une méthode qui retourne un résultat de type booléen: true si le
conducteur a eu un accident et false sinon. Quelques précisions à ce sujet:
si le degré d'alcool dans le sang du conducteur est inférieur à 1, la probabilité d'avoir un accident est
égale à 0.1.
s'il est compris entre 1 et 2, elle vaut 0.5.
s'il est compris entre 2 et 3, elle vaut 0.8.
s'il est supérieur à 3, elle vaut 0.95.
Pour écrire cette méthode, utilisez la fonction EvenementDeProbabilite, dont le code figure dans le fichier
source du projet. Cette fonction retourne la valeur true avec une probabilité donnée. Par exemple
EvenementDeProbabilite (0.5) a une probabilité 0.5 de retourner la valeur true.
La méthode Rouler
Voilà précisement ce que doit faire cette méthode:
Si le conducteur est mort, elle affiche un message d'erreur. Sinon, deux possiblilités:
1. Le conducteur a eu un accident: dans ce cas elle tue le conducteur et affiche un message indiquant
qu'il vient d'avoir un accident. On utilisera ici la méthode Accident pour savoir si le conducteur a eu
un accident.
2. Le conducteur n'a pas eu d'accident: dans le cas elle incrémente simplement son nombre d'heures
de conduite et elle affiche ses attributs.
Programmation Objet Java - Cours I - Exercices - Page 4
Exercice 2 : Conjugaison d'un verbe à l'aide de la classe String
Projet: Exo-Java-ProgObjet1/Conjugueur
Fenêtre de l'application Composants
Champs de texte
CT_Verbe
Zones de texte
ZT_Imparfait
ZT_Present
ZT_Futur
Objectif
Utiliser la classe String pour conjuguer un verbe du premier groupe à l'imparfait, au présent et au futur à
partir de son infinitif.
Question 1
On suppose dans un premier temps que le verbe donné par l'utilisateur est bien un verbe du premier groupe.
Il se termine donc par "er" et on suppose que ce n'est pas le verbe "aller".
Complètez le code de la procédure évènementielle associée au bouton Conjuguer afin d'afficher la
conjugaison du verbe aux trois temps (imparfait, présent et futur) dans les zones de texte concernées.
Question 2
Complèter le code afin de refuser la conjugaison du verbe "aller" et de tout verbe qui ne se termine pas par
"er".
Programmation Objet Java - Cours I - Exercices - Page 5
Exercice 3 : La classe Conducteur encapsulée
Projet: Exo-Java-ProgObjet1/Conducteur2
Le formulaire du projet est le même qu'à l'exercice 2 (à part le titre)
Objectif: réaliser une nouvelle version du projet Conducteur1 dans laquelle la classe Conducteur est
encapsulée.
Nouvelle organisation du projet
Le projet est désormais séparé en deux fichiers:
le fichier Conducteur2.java contient la classe fenêtre. On y trouvera donc les procédures
évènementielles gèrant l'interface graphique.
le fichier Conducteur.java est destiné à contenir la nouvelle version de la classe Conducteur. Ce
fichier ne contient pour l'instant que la méthode privée EvenementDeProbabilite. Rappelons que
dans la version précédente du projet , cette méthode appartenait à la classe fenêtre.
Le fichier Conducteur.java
Dans ce fichier, déclarez la classe Voiture de manière à ce qu'elle soit encapsulée.
Les attributs sont les mêmes que dans le projet Conducteur1, mis à part qu'ils sont à présent privés.
Concernant les méthodes:
à part la méthode EvenementDeProbabilite, elles sont toutes publiques.
il faut à présent ajouter des accesseurs afin de pouvoir accéder aux attributs de la classe
Conducteur depuis la classe fenêtre. A vous de voir lesquels.
la méthode AfficherAttributs est supprimée car on ne peut désormais plus agir sur les composants
graphique de la classe fenêtre depuis la classe Voiture !
pour la même raison, les méthodes Accident, Boire et Rouler ne font plus aucun affichage dans la
fenêtre de l'application. Elles peuvent toutefois afficher des messages d'erreur.
Le fichier Conducteur2.java
Comme la méthode AfficherAttributs n'existe plus, une nouvelle méthode nommée AfficherLeConducteur
a été introduite. C'est une procédure sans paramètre qui affiche les attributs Nom, Alcool et Conduite de
l'instance LeConducteur dans les champs de texte prévus à cet effet.
Complètez toutes les procédures évènementielles afin de faire fonctionner tous les boutons de l'interface
graphique. Pour afficher l'état du conducteur, vous utiliserez la procédure AfficherLeConducteur.
1 / 14 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !