Java: Correction Client, Article et Commande

 

La classe Client
 
import java.util.*;
 
public class Client {
    static private HashMap clientsParCode = new HashMap();
    private static int sequence = 0;
    private int code;
    private String rs;
    
    public Client(String r) {
      code = ++sequence;
      rs = r;
      clientsParCode.put(new Integer(code), this);
    }
 
    public int code () {
      return code;
    }
 
    public String raisonSociale() {
      return rs;
    }
}
 
 
 
La classe Article
 
import java.util.*;
 
public class Article {
    static private HashMap articlesParCode = new HashMap();
    private static int sequence = 0;
    private int code;
    private String designation;
    private float pu;
 
    public Article (String d, float p) {
      code = ++sequence;
      designation = d;
      pu = p;
      articlesParCode.put(new Integer(code), this);
    }
 
    public int code () {
      return code();
    }
 
    public String designation () {
      return designation;
    }
 
    public float prixUnitaire() {
      return pu;
    }
}
 
 
 
Les classes LigneCommande et Commande avec les requêtes
 
import java.util.*;
 
class LigneCommande {
    static private HashMap lignesParArticle = new HashMap();
    private Article art;
    private int qte;
    private Commande cde; 
 
    public LigneCommande(Commande c, Article a, int q) {
      cde = c;
      art = a;
      qte = q;
      ArrayList lignes = (ArrayList) lignesParArticle.get(a.code());
      if (lignes == null) {
          lignes = new ArrayList();
          lignesParArticle.put(a.code(), lignes);
      }
      lignes.add(this);
    }
 
    public Commande commande() {
      return cde;
    }
 
    public int quantite() {
      return qte;
    }
 
    public float total() {
      return qte*art.prixUnitaire();
    }
 
    public String toString() {
       return new String("code : "+art.code()+" dsignation : "
          + art.designation()+ " prix unitaire : "
          + art.prixUnitaire()+ " quantit : "
          + qte + " total : "
          + total());
    }
 
    public static ArrayList requeteLignesArticle(Article a) {
        ArrayList lignes = (ArrayList) lignesParArticle.get(a.code());
        if (lignes == null) {
          return new ArrayList();
        } else {
          return lignes;
        }
    }
}
 
public class Commande {
    static private HashMap commandesParClient = new HashMap();
    static private int sequence = 0;
    private int code;
    private Client client;
    private ArrayList lignes = new ArrayList();
 
    public Commande(Client c) {
      code = ++sequence;
      client = c;
      ArrayList cdes = (ArrayList) commandesParClient.get(client.code());
      if (cdes == null) {
         cdes = new ArrayList();
         commandesParClient.put(client.code(), cdes);
      }
      cdes.add(this);
    }
 
    public void ajouterLigne(Article a, int qte) {
      LigneCommande l = new LigneCommande(this,a,qte);
      lignes.add(l);
    }
 
    public float totalCommande() {
      float total = 0;
      for (int n = 0; n < lignes.size(); n++) {
         LigneCommande l = (LigneCommande) lignes.get(n);
         total += l.total();
      }
      return total;
    }
 
    public String toString() {
      StringBuffer sb = new StringBuffer("*** Commande no: " 
        + code 
        + "\nClient: " 
        + client.code() 
        + " " 
        + client.raisonSociale() 
        + " ***\n");
        for (int n = 0; n < lignes.size(); n++) {
          LigneCommande l = (LigneCommande) lignes.get(n);
          sb.append(l.toString() + "\n");
        }
       sb.append("Total de la commande : "+totalCommande()+"\n*********");
       return sb.toString();
    }
 
    public void afficher() {
      System.out.println(this);
    }
    
    public static ArrayList requeteCommandesClient(Client c) {
      ArrayList a = (ArrayList) commandesParClient.get(c.code());
      if (a == null) {
         return new ArrayList();
      } else {
         return a;
      }
    }
 
    public static ArrayList requeteLignesArticle(Article a) {
       return LigneCommande.requeteLignesArticle(a);
    }
 
    public static Set requeteCommandesArticle(Article a) {
      ArrayList lignes = requeteLignesArticle(a);
      ArrayList commandes = new ArrayList();
      for (Iterator itor = lignes.iterator(); itor.hasNext(); ) {
        LigneCommande l = (LigneCommande) itor.next();
        commandes.add(l.commande());
      }
      return new HashSet(commandes);
    }
 
    public boolean equals(Object o) {
      if (!(o instanceof Commande)) {
        return false;
      }
      Commande oc = (Commande) o;
      return code == oc.code;
    }
}