Programmation Java

Classe SDA 7 2025-2026

Quiz : POO et Bibliothèque Standard

Module 5 : La Programmation Orientée Objet (POO)

Question 1
Quel est l'objectif principal de l'encapsulation en POO ?
Réponse correcte : C

L'encapsulation vise à protéger l'intégrité de l'état d'un objet en rendant ses attributs private et en ne fournissant qu'un accès contrôlé via des méthodes publiques (getters/setters).

Question 2
Dans l'héritage, comment une classe fille peut-elle appeler le constructeur de sa classe mère ?
Réponse correcte : B

Le mot-clé super fait référence à la classe mère. L'appel super(...) dans un constructeur de la classe fille invoque le constructeur correspondant de la classe mère pour initialiser les attributs hérités.

Question 3
Considérez le code Animal monAnimal = new Chien();. Quelle est la manifestation la plus claire du polymorphisme ici ?
Réponse correcte : C

Le polymorphisme signifie "plusieurs formes". Il permet de traiter un objet (Chien) comme une instance de son type parent (Animal), ce qui rend le code plus flexible et générique.

Question 4
Quelle est la différence fondamentale entre une interface et une classe abstraite ?
Réponse correcte : B

Une interface définit une capacité (ce qu'un objet peut faire), tandis qu'une classe abstraite définit une identité (ce qu'un objet est) et peut fournir une implémentation de base commune à toutes ses sous-classes.

Module 6 : La Gestion des Exceptions

Question 5
Dans un bloc try-catch-finally, quand le code du bloc finally est-il exécuté ?
Réponse correcte : D

Le bloc finally est conçu pour contenir du code de "nettoyage" (comme fermer un fichier ou une connexion) qui doit impérativement être exécuté, quel que soit le résultat du bloc try.

Question 6
Quel mot-clé est utilisé pour lancer manuellement une exception dans le code ?
Réponse correcte : C

L'instruction throw new MyException(); est utilisée pour déclencher activement une exception. throws, quant à lui, est utilisé dans la signature d'une méthode pour déclarer qu'elle peut lancer une exception.

Question 7
Si un utilisateur entre le texte "douze" lorsque le programme attend un entier avec scanner.nextInt(), quelle exception sera typiquement levée ?
Réponse correcte : C

Cette exception spécifique à la classe Scanner est levée lorsque le type de l'entrée ne correspond pas au type attendu par la méthode (nextInt, nextDouble, etc.).

Question 8
Comment crée-t-on une exception personnalisée en Java ?
Réponse correcte : C

C'est le mécanisme standard pour créer des types d'erreurs spécifiques à la logique de votre application, comme InvalidAgeException ou InsufficientFundsException.

Module 7 : Bibliothèque Standard et Collections

Question 9
Quel est le principal avantage d'une ArrayList par rapport à un tableau standard (String[]) ?
Réponse correcte : C

Contrairement aux tableaux dont la taille est fixe à la création, une ArrayList gère automatiquement le redimensionnement, ce qui la rend beaucoup plus flexible.

Question 10
Dans une HashMap<String, Integer>, comment récupère-t-on la valeur associée à la clé "score" ?
Réponse correcte : A

La méthode get(key) est la manière standard de récupérer la valeur associée à une clé dans une HashMap. Si la clé n'existe pas, elle retourne null.

Question 11
Quelle est la caractéristique principale d'une HashSet ?
Réponse correcte : B

L'objectif d'un HashSet est de garantir l'unicité des éléments qu'il contient. Toute tentative d'ajout d'un élément déjà présent est simplement ignorée.

Question 12
Quand devriez-vous préférer utiliser une classe abstraite plutôt qu'une interface ?
Réponse correcte : C

La classe abstraite est idéale pour modéliser une relation "est-un" (ex: Chien est un Animal) et factoriser du code commun dans les méthodes concrètes, tout en forçant l'implémentation de méthodes abstraites.

Module 8 : Fichiers et Entrées/Sorties

Question 13
Quelle est la manière moderne et simple recommandée pour lire tout le contenu d'un petit fichier texte en une seule fois ?
Réponse correcte : C

La classe Files de l'API java.nio fournit des méthodes statiques très pratiques comme readString et writeString pour des opérations de fichier simples et concises.

Question 14
Quel est le principal avantage de la structure try-with-resources lors de la manipulation de fichiers ?
Réponse correcte : B

C'est une bonne pratique essentielle qui évite les fuites de ressources en s'assurant que la méthode close() de la ressource est toujours appelée, ce qui rend le bloc finally superflu pour cette tâche.

Question 15
Comment faut-il initialiser un FileWriter pour ajouter du texte à la fin d'un fichier existant sans l'écraser ?
Réponse correcte : B

Le constructeur de FileWriter accepte un second argument booléen. Si ce dernier est true, le flux est ouvert en mode "ajout" (append), et les nouvelles données sont écrites à la fin du fichier.

Question 16
Pourquoi la plupart des méthodes de manipulation de fichiers déclarent-elles throws IOException?
Réponse correcte : B

IOException est une "exception vérifiée". Le compilateur Java impose sa gestion (via try-catch ou en la propageant), ce qui rend les programmes qui manipulent des fichiers plus robustes.

Résultat du Quiz