↑
TD / TP — SÉRIE 2

Exercices du chapitre 2

Classes et objets

Cette série met en pratique le chapitre 2 : classe, attributs, méthodes, constructeurs, encapsulation, static, tableaux d’objets et relations. Les packages du chapitre 1 reviennent dans l’exercice 2.9. Essayez de résoudre chaque exercice par vous-même avant d’afficher la solution.

Chaque solution place le programme dans une classe MainClass, avec la méthode main. Les autres classes décrivent les objets. En Java, chaque classe publique se place dans un fichier qui porte son nom (Chien.java, MainClass.java, etc.).

Exercice 2.1 — Créer une classe simple

Créer une classe Chien avec un attribut nom de type String. Ajouter une méthode aboyer() qui affiche Woof!. Dans MainClass, créer une instance de Chien, lui donner un nom, puis appeler aboyer().


Exercice 2.2 — Gérer des attributs

Créer une classe Voiture avec deux attributs : marque (String) et annee (int). Ajouter une méthode afficherDetails() qui affiche la marque et l’année. Dans MainClass, créer une instance, initialiser les attributs, puis appeler afficherDetails().


Exercice 2.3 — Manipuler un solde de compte

Créer une classe CompteBancaire avec un attribut solde de type double. Écrire deposer(double montant) pour ajouter au solde, et retirer(double montant) pour soustraire du solde. Un retrait ne doit pas rendre le solde négatif. Dans MainClass, créer un compte, effectuer quelques dépôts et retraits, puis afficher le solde avec afficherSolde().


Exercice 2.4 — Constructeur paramétré et constructeur par défaut

Créer une classe Etudiant avec nom (String) et age (int). Écrire un constructeur paramétré qui initialise ces attributs. Ajouter un constructeur sans paramètre qui initialise nom à "Inconnu" et age à 18, en appelant this(...). Ajouter afficherInfos(). Dans MainClass, créer un étudiant avec chaque constructeur, puis afficher ses informations.


Exercice 2.5 — Constructeur avec surcharge

Créer une classe Rectangle avec largeur et hauteur de type double. Écrire un constructeur sans paramètre qui initialise les deux attributs à 1.0, et un constructeur paramétré qui les initialise avec les valeurs fournies. Ajouter calculerAire(), qui retourne l’aire. Dans MainClass, créer un rectangle avec chaque constructeur, puis afficher les deux aires.


Exercice 2.6 — Attribut de classe (static)

Créer une classe Compteur avec un attribut de classe nombreInstances (int) qui compte les instances créées. Le constructeur incrémente cet attribut à chaque new. Ajouter afficherNombreInstances(), qui affiche le total. Dans MainClass, créer plusieurs compteurs, puis afficher le nombre.


Exercice 2.7 — Méthodes de classe (static)

Créer une classe MathUtils avec les méthodes static suivantes :

  • max(int a, int b) : retourne le plus grand des deux entiers ;
  • min(int a, int b) : retourne le plus petit des deux entiers ;
  • pow(int base, int exposant) : retourne la puissance (base exposant) ;
  • sqrt(double valeur) : retourne la racine carrĂ©e.

Dans MainClass, appeler chaque méthode avec des exemples et afficher les résultats.


Exercice 2.8 — Classe Personne et population

Créer une classe Personne avec nom, prenom et age. Ajouter un attribut static nombrePersonnes, incrémenté par le constructeur. Écrire la méthode de classe afficherPopulation(), qui affiche le total. Dans MainClass, créer un tableau de Personne, y placer plusieurs instances, puis appeler afficherPopulation().


Exercice 2.9 — Points et lignes en 2D avec packages

Créer une application qui gère des points dans un plan et les lignes qui les relient.

  • Dans le package geometrie, Ă©crire une classe Point avec les attributs x et y, et une mĂ©thode afficher() pour les coordonnĂ©es.
  • Écrire une classe Ligne qui utilise deux objets Point, calcule la longueur, et affiche ses informations avec afficher().
  • Dans le package application, Ă©crire MainClass : crĂ©er des points et une ligne, puis afficher les informations.

Utiliser des import pour passer d’un package à l’autre.


Exercice 2.10 — Validation dans les setters

Créer une classe Etudiant qui gère le nom et la note d’un étudiant.

  • Deux attributs privĂ©s : nom (String) et note (double).
  • setNom retire les espaces superflus, puis vĂ©rifie que le nom ne contient que des lettres et des espaces. Sinon, afficher un message d’erreur.
  • setNote n’accepte qu’une note entre 0 et 20. Sinon, afficher un message d’erreur.

Dans MainClass, créer un étudiant, initialiser le nom et la note avec les setters, puis afficher les informations avec les getters.


Exercice 2.11 — Salle de cinéma et spectateurs

Gérer les films d’une salle et les spectateurs de chaque projection.

La classe Film a des attributs privés titre (String), duree (int, en minutes) et genre (String). Elle possède aussi un tableau spectateurs et un entier nbSpectateurs. Écrire un constructeur, des getters, ajouterSpectateur(Spectateur spectateur) (sans dépasser la capacité du tableau) et afficherSpectateurs().

La classe Spectateur a des attributs privés nom (String) et age (int), un constructeur et des getters.

Dans MainClass, créer des films et des spectateurs, associer des spectateurs aux films, puis afficher chaque film avec sa liste.