/**
* Un producteur qui produit des instances
* de la classe Product. Il range sa production dans
* une instance de la classe Stock.
*
* @author F.Dagnat
* @version 2
*/
import java.util.Scanner;
public class Producer {
/**
* Chaque producteur recoit un nom. Ce nom peut être modifié par setName et
* accedé par getName
*/
private String name;
/**
* Chaque producteur est lié à un Stock qui lui est attribué à sa création
*/
private final Stock myStock;
/**
* Construit un producteur en lui attribuant un nom et un Stock.
*
* @param name
* le nom du producteur
* @param Stock
* le Stock qui lui est attribué
*/
public Producer(String name, Stock stock) {
if ((name == null) || (stock == null))
throw new NullPointerException();
this.myStock = stock;
this.name = name;
}
/**
* Rend le nom du producteur
*
* @return le nom de ce producteur
*/
public String getName() {
return this.name;
}
/**
* Rend le Stock associé au producteur
*
* @return le Stock associé à ce producteur
*/
public Stock getStock() {
return this.myStock;
}
/**
* Un Producteur produit en mettant un nouveau produit dont le nom est
* passé en argument dans le Stock.
*
* @param productName
* le nom du produit à produire
*/
public void produce(String productName) {
if (productName != null)
this.myStock.add(new Product(productName));
}
/**
* Modifie le nom du producteur
*
* @param name
* le nouveau nom du producteur
*/
public void setName(String name) {
if (name != null)
this.name = name;
}
/**
* Rend une chaîne qui décrit les caractéristiques du
* producteur.
*
* @return description de ce producteur correspondant au nom de celui-ci
*/
@Override
public String toString() {
return "Producteur " + this.name;
}
public static void main(String[] args) {
Stock s = new Stock(9);
Producer p = new Producer("PME", s);
while (!p.getStock().isFull())
p.produce("carotte");
System.out.println(p);
System.out.println(p.getStock());
p.setName("The World Company");
System.out.println(p.getName());
System.out.println("Combien de fois voulez vous activer le producteur ?");
Scanner clavier = new Scanner(System.in);
int num = clavier.nextInt();
for (int i = 1; i <= num; i++) {
while (!p.getStock().isEmpty())
p.getStock().remove();
while (!p.getStock().isFull())
p.produce("banane");
}
System.out.println(p.getStock());
}
}