QCM : Programmation orientée objet en Java (22 questions)

Questions et réponses du QCM

1. Comment la programmation orientée objet organise-t-elle le code ?

Autour d’instances créées à partir de méthodes
Autour de méthodes regroupées dans des fichiers
Autour d’objets construits à partir de classes
Autour de fichiers construits à partir d’objets

Autour d’objets construits à partir de classes

Explication

La programmation orientée objet organise le code autour d’objets construits à partir de classes. Les méthodes sont des actions définies par les classes, les instances proviennent des classes, et les fichiers ne sont pas le principe d’organisation décrit ici.

2. Dans une classe Java contenant plusieurs méthodes, laquelle marque le point de départ de l’exécution du programme ?

La déclaration de la classe
La méthode println
La méthode main
La méthode définie en premier

La méthode main

Explication

L’exécution d’un programme Java commence dans la méthode main. Une méthode ordinaire et println ne définissent pas ce point de départ, tandis que la déclaration de classe décrit une structure plutôt qu’une étape d’exécution.

3. Dans un modèle Java servant à créer des voitures, quel rôle joue la classe ?

Un modèle définissant les attributs et les méthodes des objets
Une méthode définissant les actions d’une classe
Un ensemble d’attributs décrivant une seule propriété
Un objet concret possédant ses propres attributs et méthodes

Un modèle définissant les attributs et les méthodes des objets

Explication

Une classe est le modèle qui définit les attributs et les méthodes des objets qu’elle permet de créer. Une voiture concrète est un objet, un attribut décrit une propriété et une méthode correspond à une action.

4. Un programme crée une voiture bleue à partir de la classe Voiture ; comment désigner cette voiture particulière ?

Un attribut de la classe Voiture
Une instance de la classe Voiture
Le modèle de la classe Voiture
Une méthode de la classe Voiture

Une instance de la classe Voiture

Explication

Une voiture créée concrètement à partir de la classe Voiture est un objet, c’est-à-dire une instance de cette classe. Le modèle est la classe, une propriété est un attribut et une action est une méthode.

5. Dans la classe Élève, le champ nom décrit une propriété des élèves créés ; de quelle catégorie s’agit-il ?

Un attribut
Une variable locale
Un objet
Une méthode

Un attribut

Explication

Un attribut est une variable appartenant à une classe et décrivant une propriété de ses objets. Une méthode représente une action, un objet est une instance concrète et une variable locale est déclarée dans une méthode.

6. Deux objets Compte possèdent chacun un solde, tandis qu’un compteur static dénombre tous les comptes ; quelle interprétation est correcte ?

Le solde et le compteur sont propres à chaque objet
Le solde est propre à chaque objet et le compteur est partagé
Le solde est partagé et le compteur est propre à chaque objet
Le solde et le compteur sont partagés entre les objets

Le solde est propre à chaque objet et le compteur est partagé

Explication

Une variable d’instance appartient à chaque objet, alors qu’une variable de classe marquée static est partagée entre les instances. L’inversion attribue à tort le partage au solde, et les autres interprétations ignorent soit le caractère static, soit la nature de variable du compteur.

7. Lorsqu’une instruction crée une nouvelle instance d’une classe, quel est le rôle du constructeur ?

Définir les attributs communs à toutes les instances de la classe
Déterminer les méthodes accessibles depuis les autres classes
Initialiser automatiquement l’état de l’objet créé
Exécuter une action choisie manuellement après sa création

Initialiser automatiquement l’état de l’objet créé

Explication

Le constructeur est exécuté automatiquement lors de la création de l’objet afin d’en initialiser l’état. Une méthode appelée manuellement n’est pas le déclenchement automatique du constructeur, et la définition des attributs ou de leur accessibilité relève d’autres éléments de la classe.

8. Une classe Java nommée `Compte` doit déclarer un constructeur qui reçoit un solde initial. Quelle déclaration respecte les règles de syntaxe du constructeur ?

`double Compte(double solde) { ... }`
`Compte(double solde) { ... }`
`void Compte(double solde) { ... }`
`Initialiser(double solde) { ... }`

`Compte(double solde) { ... }`

Explication

Un constructeur porte le même nom que sa classe et ne déclare aucun type de retour. `void` ou `double` en ferait une méthode ordinaire, tandis que `Initialiser` ne correspond pas au nom `Compte`.

9. Dans une classe `Thermostat`, la température est stockée dans une variable d’instance. Une autre classe doit pouvoir la modifier selon les règles prévues par `Thermostat` : quelle conception applique l’encapsulation ?

Permettre à l’autre classe de modifier directement la variable
Déclarer la variable publique pour qu’elle soit directement accessible
Modifier une copie locale sans passer par `Thermostat`
Faire passer la modification par une méthode de `Thermostat`

Faire passer la modification par une méthode de `Thermostat`

Explication

L’encapsulation impose de passer par les méthodes de l’objet plutôt que de modifier directement ses variables depuis l’extérieur. L’accès direct et la variable publique contournent cette interface, tandis qu’une copie locale ne modifie pas l’état de l’objet.

10. Dans une classe `Dossier`, un champ est déclaré `private`. Une classe distincte du même package tente de lire ce champ directement : quel résultat s’applique ?

L’accès direct est permis dans le même package
L’accès direct est permis depuis toute classe
L’accès direct est refusé hors de `Dossier`
L’accès est permis si la classe utilise un getter public

L’accès direct est refusé hors de `Dossier`

Explication

Un membre `private` est accessible uniquement dans la classe qui le déclare, donc une autre classe ne peut pas lire directement ce champ. L’accès dans le même package concerne notamment `protected` ou l’accès par défaut, et un getter public permet de lire la valeur par une méthode plutôt que d’accéder directement au champ.

11. Une classe `Livre` possède une variable d’instance `titre`. Quelle association de méthodes correspond à la lecture puis à la modification de cette variable ?

Le getter lit `titre` et le setter lit aussi `titre`
Le setter modifie `titre` et le getter le modifie aussi
Le getter lit `titre` et le setter le modifie
Le setter lit `titre` et le getter le modifie

Le getter lit `titre` et le setter le modifie

Explication

Un accesseur, ou getter, lit une variable d’instance, tandis qu’un mutateur, ou setter, la modifie. Inverser ces rôles ou attribuer la même fonction aux deux méthodes confond leurs définitions.

12. Dans une classe Java, quel rôle joue une méthode ?

Une valeur calculée par la classe qui ne peut ni recevoir de paramètres ni traiter un objet
Un objet concret créé à partir de la classe et utilisé pour stocker ses éléments
Un bloc de code qui traite les objets et peut recevoir des paramètres ou renvoyer une valeur
Une donnée qui décrit une caractéristique des objets sans effectuer de traitement

Un bloc de code qui traite les objets et peut recevoir des paramètres ou renvoyer une valeur

Explication

Une méthode est un bloc de code de la classe qui effectue un traitement sur ses objets et peut recevoir des paramètres ou renvoyer une valeur. Un attribut décrit une caractéristique, une instance est un objet concret et une valeur de retour ne définit pas à elle seule une méthode.

13. Dans une classe Java, `calculerTotal()` ne dépend d’aucune instance et doit être appelée directement sur la classe `Facture`. Quel type de méthode convient ?

Une méthode d’instance appelée sur une facture
Une méthode de classe marquée `static`
Une méthode d’instance appelée depuis le constructeur
Une méthode marquée `void` appelée sur la classe

Une méthode de classe marquée `static`

Explication

Une méthode indépendante d’une instance est une méthode de classe, marquée `static` et appelée sur la classe. Une méthode d’instance se rattache à un objet, tandis que `void` décrit l’absence de valeur renvoyée, pas le lien à une instance.

14. Quel est l’effet principal de l’héritage lorsqu’une classe dérive d’une autre ?

Masquer les éléments de la classe parente sans permettre leur réutilisation
Renommer la classe parente sans reprendre ses éléments ni les compléter
Créer une instance de la classe parente sans définir de nouvelle classe
Réutiliser les éléments de la classe parente et enrichir la classe dérivée

Réutiliser les éléments de la classe parente et enrichir la classe dérivée

Explication

L’héritage permet à une classe de dériver d’une autre, d’en réutiliser les éléments et de les enrichir. Créer une instance ou renommer une classe ne réalise pas cette relation, et masquer les éléments ne correspond pas à leur réutilisation.

15. La classe `Camion` doit dériver de `Vehicule`. Quelle déclaration établit cette relation en Java ?

`class Camion extends Vehicule`
`class Vehicule extends Camion`
`class Camion Vehicule`
`class Camion implements Vehicule`

`class Camion extends Vehicule`

Explication

Le mot-clé `extends` indique la classe parente d’une sous-classe : ici, `Camion` dérive de `Vehicule`. `implements` concerne l’implémentation d’une interface, inverser les noms inverse la relation et omettre `extends` ne déclare pas cette relation.

16. Une équipe déclare `abstract class Forme` et tente de créer directement `new Forme()`. Quel constat s’applique ?

La classe abstraite ne peut être utilisée ni directement ni par une descendante
La création directe est impossible ; il faut utiliser une descendante concrète
La création directe est possible dès que la classe possède un constructeur
La création directe est possible, mais l’objet ne peut pas appeler de méthodes

La création directe est impossible ; il faut utiliser une descendante concrète

Explication

Une classe déclarée `abstract` ne peut pas être instanciée directement ; elle s’utilise par l’intermédiaire de ses descendantes. La confondre avec une classe concrète autoriserait l’instanciation, tandis que l’abstraction n’empêche pas l’utilisation par une descendante.

17. Dans un programme, le même appel à `faireDuBruit()` produit « Ouaf » pour un chien et « Miaou » pour un chat. Quel concept explique ces comportements différents selon l’objet appelant ?

Le polymorphisme
L’héritage de classe
L’encapsulation des données
La surcharge de méthode

Le polymorphisme

Explication

Le polymorphisme permet au même appel de méthode de produire des comportements différents selon l’objet concret. La surcharge concerne des méthodes de même nom avec des paramètres différents, l’héritage seul ne désigne pas cette variation de comportement, et l’encapsulation protège l’état interne.

18. Une variable de type `Animal` référence un objet `Chien`, et les deux classes définissent `faireDuBruit()`. Quelle version s’exécute lorsque le programme appelle cette méthode sur la variable ?

La version définie dans la classe Animal
La version choisie par le type de retour
La version redéfinie dans la classe Chien
La version déterminée à la déclaration de la variable

La version redéfinie dans la classe Chien

Explication

Lors d’un appel via une référence de type parent, c’est la version correspondant à la classe réelle de l’objet qui s’exécute. Se fier au type déclaré `Animal` ou au type de retour ne détermine pas la version appelée.

19. Que fait une classe enfant lorsqu’elle redéfinit une méthode héritée de sa classe parente ?

Elle réimplémente la méthode héritée
Elle déclare une méthode indépendante de la parente
Elle appelle la méthode parente sans la modifier
Elle crée une variante avec d’autres paramètres

Elle réimplémente la méthode héritée

Explication

La redéfinition consiste à réimplémenter dans la classe enfant une méthode héritée de la classe parente. La surcharge ajoute une variante de signature, l’appel à la méthode parente n’en change pas l’implémentation, et une méthode sans lien d’héritage n’est pas redéfinie.

20. Deux classes sans lien d’héritage direct partagent la capacité d’être rechargées en carburant. Quel rôle une interface peut-elle jouer pour elles ?

Créer un objet concret utilisé par les deux classes
Masquer les données internes propres aux deux classes
Représenter la capacité partagée par les deux classes
Remplacer leur héritage par une classe parente commune

Représenter la capacité partagée par les deux classes

Explication

Une interface représente une propriété ou une capacité transversale que peuvent partager des classes sans lien d’héritage direct. Une classe parente commune relève de l’héritage, une interface n’est pas une instance concrète, et la protection des données relève de l’encapsulation.

21. Une équipe veut définir la capacité `Motorise`, puis la faire mettre en œuvre par une classe `Voiture`. Quels mots-clés doit-elle employer, dans cet ordre ?

`implements` puis `interface`
`interface` puis `extends`
`interface` puis `implements`
`extends` puis `implements`

`interface` puis `implements`

Explication

Une interface se déclare avec `interface`, et une classe la met en œuvre avec `implements`. Inverser ces mots-clés confond leurs rôles, tandis que `extends` sert à l’héritage de classe plutôt qu’à la mise en œuvre d’une interface.

22. Une classe `Voiture` doit hériter de `Transport` et mettre en œuvre les interfaces `Motorise` et `Rechargeable`. Quelle déclaration respecte les possibilités de Java ?

Mettre en œuvre `Transport` et étendre les deux interfaces
Étendre `Transport` et mettre en œuvre les deux interfaces
Étendre `Transport` et une autre classe, puis mettre en œuvre les interfaces
Étendre `Transport` et mettre en œuvre une seule interface

Étendre `Transport` et mettre en œuvre les deux interfaces

Explication

Une classe peut étendre une seule classe parente, tout en mettant en œuvre plusieurs interfaces. Limiter les interfaces à une seule confond les deux mécanismes; étendre plusieurs classes ou étendre des interfaces comme des classes ne respecte pas cette règle.

Révisez avec les flashcards

Mémorisez les réponses avec 55 flashcards sur Programmation orientée objet en Java.

Comment la programmation orientée objet organise-t-elle le code ?

Autour d’objets construits à partir de classes.

Dans quelle méthode commence l’exécution d’un programme Java ?

Dans la méthode main.

Qu’est-ce qu’une classe en programmation orientée objet ?

Un modèle qui définit les attributs et les méthodes des objets qu’elle permet de créer.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Programmation orientée objet en Java.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM