L’examen de POO du 3 septembre 2013 à 13:30 en L44

Accueil

L’examen consiste à rédiger le code source de cette application.

Commencez par créer, sur votre WAMP, une BD MySql grâce à ce script

mysql>source c:/monChemin/personnes.sql;

Même sous MS-DOS, MySql sépare les répertoires par des / et non par des \

Cette base de données ne contient qu’une seule table de personnes, avec leur nom, prénom, date de naissance, taille et poids.

Consignes à respecter

La base de données ne peut être accédée qu’une seule fois dans la vie de l’application, au constructeur.
Pas question de lancer une requête SQL lors de chaque affichage.

Une fois démarrée, l’application doit pouvoir continuer à fonctionner même si la base de données était détruite.

Tous les tris doivent être effectués en Java. Votre requête SQL ne peut comporter aucun ORDER BY.

La Personne

Vous créerez ensuite une classe Personne qui comporte les champs de la table, leurs setters et getters.
Pour créer une Personne facilement et rapidement, faites-vous un constructeur qui accepte tous ces champs.

La classe personne contient une méthode qui permet de l’afficher en une seule chaîne de caractères.
Cette méthode, intrinsèque à Java, permet d’afficher tout objet en chaîne.

La personne est également comparable à une autre personne.
Le critère de comparaison intrinsèque à une personne est l’ordre alphabétique du nom.
Si les noms de famille sont identiques, on trie par prénom.

La liste des personnes

Une fois votre classe Personne rédigée, construisez une seconde classe ListePersonnes qui hérite d’ArrayList.

Le constructeur de cette classe invoquera une méthode privée qui se connecte en JDBC sur la base de données que vous venez de créer.
Elle en lit la table des personnes et crée une Personne par enregistrement qu’elle contient.

Pour utiliser JDBC, il vous faudra le pilote MySql.jar
S’il n’est pas installé sur votre système, le voici.

Les personnes nouvellement créées sont immédiatement ajoutées à la liste des personnes ListePersonnes.

Attention, il est interdit d’utiliser une instruction SQL de tri ORDER BY dans votre code SQL.
Lequel sera réduit à sa plus simple expression : SELECT * FROM t_personnes

Prenez les personnes en vrac, c’est Java qui triera.

Si vous provoquez un tri sur la liste des personnes, c’est l’ordre alphabétique de nom et prénom qui est appliqué.

En fin de constructeur, la liste des personnes est créée.

Objets comparateurs

Créez ensuite des objets comparateurs, capables de trier les personnes selon :

Interface graphique

Vous concevrez une interface graphique toute simple,
composée d’une fenêtre avec un menu Critère et les quatre options de tri :

  1. Alphabétique
  2. Naissance
  3. Taille
  4. Poids

dans autant de JMenuItems.

Le simple déclenchement du menu provoquera l’affichage de la collection triée selon le critère souhaité.

L’affichage du résultat

Dans mon application, j’affiche les résultats dans une JTextArea.
Etant donné que nous n’avons pas vu ce composant au cours, j’accepte, sans soustraire de point, que vous affichiez le résultat dans la console.

Si vous voulez l’utiliser, son maniement est très simple :
private JTextArea monArea = new JTextArea(); Vous la mettez dans la zone centrale de votre BorderLayout

Pour y ajouter une ligne de texte : monArea.append(maChaine + "\n");
Cette instruction se comportera comme un System.out.println(maChaine);
Sans le "\n", il n’y aura pas de retour chariot, comme dans System.out.print(maChaine);

Pour en définir le contenu : monArea.setText(maChaine);

Donc, pour l’effacer avant d’y afficher les données triées : monArea.setText("");
Il n’y a pas d’instruction clean ou clear.

En tant que développeur Java, vous devrez très souvent apprendre à manipuler de nouveaux composants, tant il y en a.
Cette situation sera très fréquente dans votre vie professionnelle.

L’examen vous évaluera essentiellement sur :

  1. L’accès à une BD en JDBC
  2. La manipulation des ArrayList, et leurs tris
  3. La conception d’une interface graphique événementielle capable de déclencher ces tris et d’afficher les résultats.

Peu importe par contre qu’ils s’affichent dans une JTextArea ou en console, mais essayez tout de même d’utiliser la JTextArea.

Si l’utilisation de ce nouveau composant en situation d’examen génère un stress excessif, rabattez-vous sur l’usage de la console telle que vous y êtes habitués.

Quoi qu’il en soit, veillez à rendre votre examen à temps.

Bon travail !
Christian Mascart