UPPA - Année universitaire 2015-2016
Département informatique
Licence informatique 3e année
Franck.Barbier@FranckBarbier.com
Examen de 1ère session – TOO
Vous n'avez droit à AUCUN document
Un programmeur a décidé de programmer en Java (voir le bas de cette page) une classe « utilitaire » lui permettant
de définitivement calculer si une année est bissextile ou non. Toutefois, son manque de connaissances en Java (il a
fait que du C dans sa vie, c’est malheureux) lui fait faire des erreurs.
Question 1 (5 points) : il y a 5 fois le mot-clef « final » dans le code. Dans l’ordre d’apparition, dire pour chacune
d’elles si « final » est utile ou non. Répondre « utile » ou « inutile » avec justification courte.
Question 2 (3 points) : est-il judicieux de rendre les deux fonctions « annee_bissextile_oui_ou_non » polymorphes,
et si « oui », par quel mot-clef ajouté ?
Question 3 (3 points) : y-a-t-il une ou des ligne(s) qui empêche(nt) la compilation, si « oui », laquelle/lesquelles ?
Question 4 (3 points) : qu’affiche le programme si l’on a supprimé la ou les ligne(s) qui empêche(nt) la compilation ?
Question 5 (6 points) : donnez une version minimaliste (faites le minimum de corrections dans le programme initial
pour qu’il fonctionne) dans laquelle les deux fonctions « annee_bissextile_oui_ou_non » ne sont pas « static ».
final public class Utilitaire_annee_bissextile {
int _year;
final public static boolean annee_bissextile_oui_ou_non(final int year) {
assert (year >= 0);
_year = year;
return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}
final public static boolean annee_bissextile_oui_ou_non(final java.util.Calendar calendrier) {
int year = calendrier.get(java.util.Calendar.YEAR);
_year = year;
return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}
public static void main(String[] args) {
System.out.println(Utilitaire_annee_bissextile.annee_bissextile_oui_ou_non(2000));
System.out.println(Utilitaire_annee_bissextile.annee_bissextile_oui_ou_non(java.util.Calendar.getInstance()));
}
}