Académique Documents
Professionnel Documents
Culture Documents
GSTR1 - GM1
R.J.
Printemps 2023
4 Java (suite)
POO en Java
(suite)
Solution de l’exercice 10
Valeur carte.java :
public enum Valeur carte {
AS, DEUX, TROIS, QUATRE, CINQ, SIX, SEPT, HUIT, NEUF, DIX, VALET,
DAME, ROI;
}
Enseigne carte.java :
public enum Enseigne carte {
TREFLE, CARREAU, COEUR, PIQUE;
}
Carte.java :
public class Carte {
private Valeur carte vc;
private Enseigne carte ec;
public Carte() {}
public Carte(Valeur carte i vc, Enseigne carte i ec) {vc = i vc; ec = i ec;}
private String majuscule minuscules(String ch) {
String s1, s2;
Solution de l’exercice 10
Solution de l’exercice 10
Solution de l’exercice 10
Solution de l’exercice 10
Solution de l’exercice 10
Solution de l’exercice 11
Jour.java :
public enum Jour {
LUNDI (true, 8),
MARDI (true, 8),
MERCREDI (true, 4),
JEUDI (true, 8),
VENDREDI (true, 8),
SAMEDI (false, 0),
DIMANCHE (false, 0);
private boolean etudier;
private int volume horaire;
Jour(boolean i etudier, int i volume horaire) {
etudier = i etudier; volume horaire = i volume horaire;
}
public void afficher jour() {
System.out.print(name() + ” est un jour ”);
if(etudier) System.out.println(”d’étude ; ” + volume horaire + ” heures sont pro-
grammées en ce jour.”); else System.out.println(”de repos, comportant ” + (24-
volume horaire) + ” heures libres.”);
R.J. Modélisation et programmation orientée objet 10/57
POO en Java
Java
Aller plus loin avec Java
Solution de l’exercice 11
}
}
Exercice11.java :
import java.util.Scanner;
public class Exercice11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Jour[] tj = Jour.values();
int i;
System.out.print(”Veuillez choisir entre ”);
for (i=0; i<tj.length; i++) System.out.print(tj[i] + ” ”);
System.out.print(”: ”); String s = sc.nextLine();
Jour j = Jour.valueOf(s);
for (i=j.ordinal(); i<tj.length; i++) tj[i].afficher jour();
for (i=0; i<j.ordinal(); i++) tj[i].afficher jour();
}
}
Solution de l’exercice 11
Solution de l’exercice 12
Ensemble.java :
public class Ensemble<TypeG> {
private TypeG val 1;
private TypeG val 2;
private TypeG val 3;
private TypeG val 4;
public Ensemble(TypeG i val 1, TypeG i val 2, TypeG i val 3, TypeG i val 4) {
val 1 = i val 1; val 2 = i val 2;
val 3 = i val 3; val 4 = i val 4;
}
public void afficher ensemble() {
System.out.println(”{” + val 1 + ”, ” + val 2 + ”, ” + val 3 + ”, ” + val 4 + ”}”);
}
public void set val 1(TypeG v val 1) {val 1 = v val 1;}
public void set val 2(TypeG v val 2) {val 2 = v val 2;}
public void set val 3(TypeG v val 3) {val 3 = v val 3;}
public void set val 4(TypeG v val 4) {val 4 = v val 4;}
public void melanger ensemble() {
Solution de l’exercice 12
if ((val 1 == val 2) && (val 1 == val 3) && (val 1 == val 4)) Sys-
tem.out.println(”L’ensemble est homogène ; il n’y a rien à mélanger.”); else
{
TypeG tmp;
tmp = val 1; val 1 = val 4; val 4 = tmp;
tmp = val 2; val 2 = val 3; val 3 = tmp;
System.out.println(”L’ensemble est hétérogène ; il vient d’être mélangé.”);
}
}
}
Exercice12.java :
public class Exercice12 {
public static void main(String[] args) {
Ensemble<Integer> e1 = new Ensemble<Integer>(7,7,7,7);
Ensemble<Float> e2 = new Ensemble<Float>(0.5f,8.0f,66.43f,9.7f);
Ensemble<Boolean> e3 = new Ensemble<Boolean>(false,true,false,true);
Ensemble<Character> e4 = new Ensemble<Character>(’W’,’W’,’W’,’W’);
Solution de l’exercice 12
Solution de l’exercice 12
Notez bien que deux variables de type chaı̂ne de caractères créées avec
l’opérateur new et stockant une même valeur, pointeront vers deux em-
placements mémoire différents.
De ce fait, le code Java suivant affichera false dans l’écran :
String t1 = new String(”Salut”);
String t2 = new String(”Salut”);
System.out.println(t1 == t2);
Donc l’opérateur == ne peut pas être utilisé dans ce cas là pour faire une
comparaison de valeurs.
Une liste chaı̂née (linked list) est une liste dont chaque élément est lié à
ses deux éléments adjacents par une référence. Chaque élément de la
liste possède en effet une référence vers l’élément qui le précède et une
référence vers l’élément qui le suit, à l’exception du premier élément de
la liste (dont l’élément précédent vaut null) et du dernier élément de la
liste (dont l’élément suivant vaut null).
LinkedList est dotée de plusieurs méthodes prédéfinies. On va en
découvrir les plus utiles dans l’exemple qui suit :
Si par défaut une liste peut contenir n’importe quel type de valeurs,
sachez qu’on peut la limiter à uniquement un seul type donné.
Prenons un exemple d’illustration :
Une table de hachage (hash table) est une Map où on peut stocker
n’importe quelle valeur non-nulle. Les clés ne peuvent pas elles aussi
valoir null.
Sachez qu’une Hashtable peut être utilisée dans plusieurs threads a
sans qu’il y ait un risque de conflit de données.
Comme tout autre sous-type de collections, Hashtable est dotée de
plusieurs méthodes prédéfinies. On va en découvrir les plus utiles dans
l’exemple qui suit :
a
Les threads constituent un mécanisme de Java, qui permet de répartir différents
traitements d’un même programme en plusieurs parties distinctes qui vont s’exécuter
simultanément.
HashSet est le sous-type de Set qui est le plus utilisé, car généralement
il est le plus performant en temps d’accès. Un ensemble de hachage
(hash set) est un ensemble qui peut contenir une valeur nulle.
Notez bien que si on ajoute dans un HashSet une valeur qui y existe
déjà, alors l’ancienne occurrence de cette valeur sera écrasée par la
nouvelle occurrence. Notez bien également que l’ordre d’affichage des
valeurs d’un HashSet peut ne pas coı̈ncider avec leur ordre d’ajout.
Voici un exemple d’utilisation d’un HashSet :
Les fichiers
Les fichiers
Les fichiers
Les fichiers
Les fichiers
Les fichiers
Les fichiers
Les fichiers
Les fichiers
Les fichiers
Les fichiers
Les fichiers