Le projet POO

Accueil

Quelques conseils

Le développement de votre projet POO commence par la conception de votre base de données.
La structure de votre base de données, ici limitée à trois entités, déterminera celle de votre application.

Une base de données mal conçue devient vite un cauchemar pour le développeur.
Car les tables qu'elle propose sont l’antichambre de vos objets,
qui les liront et contiendront les données extraites de leurs champs.

Commencez par avoir les idées claires: Avec quoi vais-je jouer ?

  1. Des clients
    • Nom
    • Prénom
    • Adresse
    • Code postal
    • Ville
    • E-mail
  2. Des produits
    • Nom
    • Poids
    • Prix unitaire
  3. Des commandes
    • Date de passation
    • Client (clef étrangère)
    • Produit (clef étrangère)
    • Prix lors de la commande
    • Quantité

Les clients et les produits existent indépendamment les uns des autres.
Les commandes relient plusieurs clients à plusieurs produits.

La commande doit mémoriser le prix du produit lorsqu’elle a eu lieu,
car le prix du produit doit pouvoir varier par la suite,
sans que cela ne se répercute sur la commande.

La base de données

Une database se conçoit par un script.
Ne perdez pas votre temps à la conçevoir avec PhpMyAdmin, car elle est stockée sur le WAMP, sur le disque C: qui est ré-initialisé lors de chaque démarrage.
Tout votre travail sera perdu.

Rédigez votre script, stockez-le sur votre W:
Pour créer votre BD, démarrez le WAMP, ouvrez une session MySql, puis, au prompt MySql, lancez la commande
source W:/mon/chemin/dacces/monScript.sql
Au prompt MySql, les répertoires doivent être séparés par des / et non pas par des \, même sous Windows.

Comme j’ai vu que certains groupes avaient des difficultés à conçevoir leurs databases, je vous propose l’exemple ci-contre.
Ne vous fiez pas au code proposé par un outil graphique comme PhpMyAdmin ou DbMain.
Il est imparfait, et ne vous permet pas de donner un contenu à vos tables. Juste une structure vide.

Exemple

Les tables ne doivent contenir que des données primaires.
N’y stockez jamais de données redondantes ni calculées, comme le nombre de commandes ou le total des commandes d'un client.
Ces données doivent être calculées en direct par des vues.
Mon script vous en propose deux exemples :

  1. v_commandes dresse la liste chronologique des commandes, avec le client, le produit, la quantité, le prix et le total calculé (produit du prix par la quantité)
  2. v_totCli calcule le chiffre d’affaire de chaque client (total de ses commandes).

C’est le rôle d’une vue de calculer les données dérivées.

Les noms des champs

Choisissez des noms de champs aussi brefs et précis que possible. Un nom ambigü est source de bugs.

Choisissez-les bien, car plus votre projet avancera, plus il sera difficile de changer le nom d’un champ.
Car un nom de champ est utilisé dans un tas de requêtes, de vues dans la BD elle-même, mais aussi dans votre code Java (JDBC), ou d’autres applications comme PHP, qui peuvent aussi exploiter votre BD.

La base de données est à votre application ce que les fondations sont à une maison.

Il est très difficile de les modifier une fois qu’on a commencé à bâtir dessus.
Dans un projet de taille moyenne, changer le nom ou la nature d’un champ peut prendre plusieurs journées de travail et engendre une grande quantité de bugs.

En Java

Commencez par votre fonction main vide, ne développez pas encore de vue (d’intrerface)

Les modèles

Concevez vos modèles : un par table, avec autant de champs, de getters et de setters.
Faites un constructeur paramétré auquel vous passerez l'Id du champ que vous voulez mémoriser dans votre objet.

Client monClient = new Client(2);

Ce constructeur appellera le setter setClient(int pId), qui reçoit en paramètre l’Id du client souhaité.

Ainsi, il sera possible de réutiliser l’objet monClient sans devoir en créer un nouveau pour changer de client.

La classe Client doit avoir une méthode toString() qui permet de l’afficher dans la console: return(this.nom + " " + this.prenom + " " + …

Ca vous permettra, depuis votre public static void main, de concevoir et d’afficher un client très simplement :

Client monClient = new Client(2);
System.out.println(monClient.toString());

Pas la peine d’invoquer la méthode toString() du client, elle est implicite.

Les vues

Une fois vos modèles bien conçus, vous développerez ensuite plus facilement vos vues, qui invoqueront les objets pour les afficher.