public class Compte {
	private static long découvertMax = 1000;
	private static int numéroSuivant = 1;

	public static void setDécouvertMax(long val) {
		assert (val >= 0);
		découvertMax = val;
	}

	public static long getDécouvertMax() {
		return découvertMax;
	}

	private int numéro;
	private long solde;

	public Compte(long soldeInitial) {
		assert (soldeInitial >= 0);
		numéro = numéroSuivant;
		++numéroSuivant;
		solde = soldeInitial;
	}

	public void déposer(long val) {
		assert (val > 0);
		solde += val;
	}

	public boolean retraitPossible(long val) {
		return val > 0 && solde - val >= -découvertMax;
	}

	public void retirer(long val) {
		assert (retraitPossible(val));
		solde -= val;
	}

	@Override
	public String toString() {
		String s = "le compte n°" + numéro + " est ";
		if (solde >= 0)
			s += "crédité de " + solde;
		else
			s += "à découvert de " + (-solde);
		return s + "€";
	}
}
