Java: Client, Article et Commande

 

Un client comporte un code client et une raison sociale. Un article comprend un code, une désignation et un prix unitaire. Un client peut passer des commandes pour des articles. Une commande associe donc un client et des articles. Une commande comporte des lignes de commandes. Chaque ligne de commande est créée pour un article et comprend la quantité commandée.
  1. Déterminer les classes utiles à la gestion de ce système d'information et spécifier leurs membres.

  2. Ecrire la méthode toString de la classe Commande qui permet l'affichage d'une commande sur la sortie standard.

  3. On désire en plus disposer de fonctions pour :

  • trouver l'ensemble des commandes d'un client particulier

  • trouver les lignes de commandes d'un article, toutes commandes confondues

  • trouver l'ensemble des commandes comprenant une ligne pour un article particulier

 

Pour mettre en œuvre ces fonctions, introduisez dans les classes de nouveaux attributs afin de stocker l’ensemble des clients, articles et commandes. Ainsi, chaque classe doit offrir le moyen de répertorier l’ensemble de ses propres instances et d’accéder à chacune d’elles à partir d’une clé. On dispose ainsi d’une petite base de données objet.

Vous pouvez utiliser l’interface Map qui permet d'associer à chaque élément d’une collection une clé unique :

 

public interface Map<K,V> {

 // Basic operations

 V put(K key, V value);

 V get(Object key);

 V remove(Object key);

 boolean containsKey(Object key);

 boolean containsValue(Object value);

 int size();

 boolean isEmpty();

 

 // Bulk operations

 void putAll(Map<? extends K, ? extends V> m);

 void clear();

 // Collection Views

 public Set<K> keySet();

 public Collection<V> values();

 public Set<Map.Entry<K,V>> entrySet();

 // Interface for entrySet elements

 public interface Entry {

 K getKey();

 V getValue();

 V setValue(V value);

 }

}

Parmi les classes qui implémentent cette interface, on pourra utiliser la classe HashMap

public class HashMap<K,V>

extends AbstractMap<K,V>

implements Map<K,V>, Cloneable, Serializable