Programmation Orientée Objet Avancée - Java
Pr. Lahoucine BALLIHI
Ce guide vous aidera à réviser les concepts clés de votre cours POOA Java.
Concepts couverts :
Utilisez les flèches ← → pour naviguer
Une collection est un groupe d'objets où la duplication peut être autorisée.
Utilisé pour :
HashSet : Table de hachage, pas d'ordre garanti, accès rapide
TreeSet : Set trié (SortedSet), ordre croissant garanti, plus lent mais ordonné
Set set = new HashSet(); // Pas d'ordre
set.add("Lahoucine");
set.add("Ali");
System.out.println(set);
// [Zahra, Lahoucine, Ismail, Brahim, Ali] - ordre non garanti
Set setTrie = new TreeSet(set); // Trier un HashSet existant
System.out.println(setTrie);
// [Ali, Brahim, Ismail, Lahoucine, Zahra] - trié
ArrayList : Accès rapide par index, meilleur pour la lecture
LinkedList : Insertion/suppression rapides, peut servir de queue (FIFO)
List list = new ArrayList(); // Accès par index
list.add("Lahoucine");
list.add("Ali");
System.out.println(list.get(2)); // Accès rapide par index
// 2: Zahra
LinkedList queue = new LinkedList(); // Queue FIFO
queue.addFirst("Lahoucine"); // Ajouter au début
queue.addFirst("Ali");
queue.removeLast(); // Retirer le dernier (FIFO)
System.out.println(queue);
HashMap : Table de hachage, pas d'ordre, accès très rapide
TreeMap : Arbre binaire équilibré, trié par ordre croissant des clés
Map<String, String> domains = new HashMap<>();
domains.put("ma", "Morocco");
domains.put("de", "Germany");
domains.put("us", "United States");
// Pas d'ordre garanti
TreeMap<String, String> sorted = new TreeMap<>();
sorted.put("ma", "Morocco");
sorted.put("de", "Germany");
System.out.println(sorted);
// (de=Germany, ma=Morocco, us=United States) - trié
indexOf(Object o) : Obtenir la position d'un objetlastIndexOf(Object o) : Dernière position d'un objetget(int i) : Récupérer l'objet à la position iset(int i, Object o) : Placer un objet à la position iadd(Object o) : Ajouter un objetremove(int i) : Supprimer l'objet à la position iremoveRange(int fromIndex, int toIndex) : Supprimer une plageput(key, value) : Ajouter/modifier une paire clé-valeurget(key) : Récupérer la valeur associée à une clékeySet() : Obtenir l'ensemble des clésvalues() : Obtenir toutes les valeursMap<String, String> domains = new HashMap<>();
domains.put("ma", "Morocco");
domains.put("ru", "Russia");
System.out.println(domains.get("ru")); // Russia
for (String item : domains.values()) {
System.out.println(item); // Parcourir les valeurs
}
Set keys = domains.keySet();
System.out.println(keys); // [de, ru, ma, hu, us]
Un thread ("file") a accès au CPU, gère un processus, et partage la mémoire avec d'autres threads.
Comparaison :
Par implémentation de l'interface Runnable (recommandé)
public class MaFile implements Runnable {
public void run() {
int i = 0;
while (true) {
if (i % 10 == 0)
System.out.println(i + " est divisible par 10");
if (i > 101) break;
i++;
}
}
}
public class LanceFile {
public static void main(String[] arg) {
Thread t = new Thread(new MaFile());
t.start(); // Démarrer le thread
}
}
start() : Place le thread dans l'état "runnable" (éligible par le CPU)yield() : Demande au scheduler de laisser la main aux autres threadssleep(int millis) : Bloque le thread pour un temps spécifié (état d'attente)Une exception est un objet à part entière, instance de la classe Exception ou d'une de ses sous-classes.
Elle représente une erreur ou une situation exceptionnelle qui peut survenir pendant l'exécution du programme.
Exception vérifiée : Doit être déclarée avec throws ou gérée avec try-catch
RuntimeException : Exception non-vérifiée, peut être lancée sans déclaration
// ❌ Incorrect - Exception vérifiée
public void action(int p) {
if (p == 0)
throw new Exception("Erreur"); // Erreur de compilation
}
// ✅ Correct - RuntimeException non-vérifiée
public void action(int p) {
if (p == 0)
throw new RuntimeException("Erreur"); // OK
}
try-catch : Capturer et gérer l'exceptionthrows : Déclarer que la méthode peut lancer une exceptionfinally : Code toujours exécuté, même en cas d'exceptiontry {
// Code qui peut lancer une exception
int result = 10 / 0;
} catch (ArithmeticException e) {
// Gérer l'exception
System.out.println("Division par zéro !");
} finally {
// Code toujours exécuté
System.out.println("Fin du bloc");
}
trycatch correspondantfinally (toujours exécuté)Pas de duplication
HashSet (rapide)
TreeSet (trié)
Duplication autorisée
ArrayList (index)
LinkedList (queue)
Clé-Valeur
HashMap (rapide)
TreeMap (trié)
Runnable interface
start() pour démarrer
sleep() pour attendre
Exception (vérifiée)
RuntimeException (non-vérifiée)
try-catch-finally
Vous avez maintenant révisé tous les concepts clés :
Bonne chance pour votre examen ! 💪
Cours POOA Java - Pr. Lahoucine BALLIHI