Académique Documents
Professionnel Documents
Culture Documents
TD1
Exercice 1
1. Écrire une classe nommée Voiture ayant les propriétés (attributs) suivantes :
marque, modele, couleur, numeroDeChassis, nombreDePlaces.
6. On dira que deux voitures sont identiques si elles ont le même numéro de
châssis. Écrire une méthode nommée egale qui prend en paramètre une
voiture et la compare à la voiture courante. Cette méthode retourne un booléen
dont la valeur est égale à true si la voiture passée en paramètre lui est
identique et false sinon.
8. Écrire une classe de test nommée Programme dans laquelle on écrira une
méthode nommée main. Dans le corps de la méthode main :
1/6
8.1. Créer deux voitures voiture1 et voiture2.
Travail à faire
1. En se basant sur le design pattern composite, proposer un modèle de
stockage des articles de ce dépôt.
2. Créer les classes correspondantes au modèle proposé.
2/6
3. Proposer un modèle pour la gestion de la facturation. On précise qu’une
facture comprend : une référence, la date de vente, le client (décrit par un
numéro d’identification, son nom et prénom) et des lignes de ventes. Une ligne
de vente est constituée d’un article (référence, libellé), la quantité vendue et la
remise.
4. Dans une classe Boutique de test, créer les articles listés dans le tableau
suivants:
3/6
Exercice 3 : Développement du jeu de démineur
Le jeu démineur est composé d'un plateau rectangulaire, d'un chronomètre et d'un
compteur de mines. Le plateau est un quadrillage de cases. Au début du jeu, toutes les
cases du plateau sont couvertes, le compteur de mines indiquant le nombre de mines
restantes à localiser. Le chronomètre compte le nombre de secondes écoulées depuis le
début de la partie. La partie commence lorsque la première case est découverte. Quand
une case est découverte, son contenu est affiché. Le contenu d'une case peut être rien,
une mine ou un nombre indiquant le nombre de mines présentes dans les cases voisines.
Les scénarios suivants peuvent se produire lorsqu'une case est découverte, en fonction de
son contenu :
➔ Un chiffre – Il ne se passe rien
➔ Un blanc – Toutes les cases voisines sont dévoilées, à condition qu'elles ne soient
pas signalées par un drapeau. Si l'une de ces cases voisines ne contient rien, le
processus de découverte continue automatiquement à partir de cette case.
➔ Une mine – Le jeu est terminé et le joueur a perdu.
Si elle est toujours couverte, une case peut être marquée en respectant les règles
suivantes:
➔ Marquer une case qui n'est ni découverte ni marquée décrémente le compteur de
mines restantes à localiser et un drapeau apparaît sur la case. Il indique que cette
case contient potentiellement une mine. Une case marquée d'un drapeau ne peut
être découverte.
➔ Marquer une case déjà signalée d'un drapeau permet de la remettre dans son état
initial, à savoir couverte et non marquée. Le compteur de mines est alors incrémenté
de 1.
Travail à faire
4/6
2.1. Écrire une classe nommée Case et qui contient les attributs suivants :
■ x de type entier : index de la ligne contenant la case,
■ y de type entier : index de la colonne contenant la case,
■ minee de type booléen : a la valeur true si la case cache une mine et
false sinon,
■ etatCourant de type Etat : référence un objet de type Etat dont le type
concret permettra de définir et connaître l’état de la case.
2.3. Écrire une méthode List<Case> getVoisines() qui renvoie une collection des
cases voisines de la case courante.
3.1. Écrire une classe nommée Grille et qui contient les attributs suivants:
■ nombreLignes de type entier : nombre de cases sur une colonne,
■ nombreColonnes de type entier : nombre de cases sur une ligne,
■ cases de type List<Case> : collection des cases de la grille. Cette
collection aura une longueur égale à
nombreLignes X nombreColonnes une fois que toutes les cases
seront rattachées à la grille.
4.1. Écrire une méthode getCase(int n) qui renvoie la case située à la position
n de la liste cases. On rappelle que pour obtenir l’élément situé à la
position i d’un objet de type List, on appelle la méthode get(i) sur cet
objet.
5/6
4.2. Pour faire correspondre une case de coordonnées (x, y) de la grille à une
case située à une position i de la collection cases, considérer la
correspondance schématisée à la figure suivante.
5.1. Écrire une classe nommée CaseCouverte qui implémente l’interface Etat
et qui représente l’état d’une case couverte. Fournir une implémentation
à chacune des méthodes de l’interface Etat.
5.3. Écrire une classe nommée CaseMarquee qui implémente l’interface Etat
et qui représente l’état d’une case marquée. Fournir une implémentation
à chacune des méthodes de l’interface Etat.
NB :
- Respecter le principe de l’encapsulation.
- Par contre, pour des raisons de lisibilité, ne pas écrire les accesseurs.
- Bien indenter le code.
6/6