QCM : Fondamentaux de la POO en Java (15 questions)

Questions et réponses du QCM

1. Dans une application de gestion, quelle organisation caractérise la programmation orientée objet ?

Un programme organisé autour d’objets regroupant données et comportements
Un programme organisé autour de classes tenant lieu d’objets individuels
Un programme organisé autour d’instructions isolées sans regroupement
Un programme organisé autour de données dépourvues de comportements

Un programme organisé autour d’objets regroupant données et comportements

Explication

La POO organise le programme autour d’objets qui réunissent des données et des comportements. Réduire les objets aux données oublie leurs comportements, confondre classes et objets mélange modèle et instance, et l’organisation en instructions isolées ne correspond pas à ce paradigme.

2. Quels quatre principes sont souvent associés à la programmation orientée objet ?

Encapsulation, composition, polymorphisme et abstraction
Instanciation, héritage, polymorphisme et abstraction
Encapsulation, héritage, polymorphisme et abstraction
Encapsulation, héritage, polymorphisme et composition

Encapsulation, héritage, polymorphisme et abstraction

Explication

Les quatre principes couramment associés à la POO sont l’encapsulation, l’héritage, le polymorphisme et l’abstraction. La composition n’est pas le principe nommé abstraction ou polymorphisme, et l’instanciation ne remplace pas l’encapsulation.

3. Une équipe conçoit un logiciel et définit pour les véhicules les caractéristiques « marque » et « vitesse », ainsi que les actions « accélérer » et « freiner ». Quel élément constitue le modèle de ces véhicules ?

La classe qui définit leurs attributs et leurs méthodes
L’attribut qui décrit une caractéristique comme la vitesse
La méthode qui représente une action comme accélérer
L’objet qui possède des valeurs propres pour ces attributs

La classe qui définit leurs attributs et leurs méthodes

Explication

Une classe sert de modèle et définit les attributs et méthodes que ses objets pourront avoir. Un objet est une instance concrète, tandis qu’un attribut désigne une donnée et une méthode un comportement.

4. Deux voitures créées à partir de la même classe ont des marques différentes et peuvent accélérer. Qu’est-ce que chacune de ces voitures représente ?

Une méthode qui décrit l’action d’accélérer pour les voitures
Une instance avec son propre état et les comportements de sa classe
Une classe qui définit le modèle commun des deux voitures
Un attribut qui contient la marque propre à chaque voiture

Une instance avec son propre état et les comportements de sa classe

Explication

Chaque voiture est un objet, c’est-à-dire une instance de la classe, avec un état formé des valeurs de ses attributs et les comportements définis par ses méthodes. La classe est le modèle commun, l’attribut une donnée et la méthode une action.

5. Dans un programme Java, une développeuse écrit `Voiture voiture1 = new Voiture();`. Quelle interprétation de cette instruction est correcte ?

`voiture1` hérite de la classe `Voiture` grâce à `new`, et `Voiture()` crée une sous-classe
`voiture1` est l’objet lui-même, et `Voiture()` définit son type de variable
`voiture1` référence un nouvel objet créé par `new`, et `Voiture()` appelle son constructeur
`voiture1` référence un objet existant, et `new` appelle son constructeur sans le créer

`voiture1` référence un nouvel objet créé par `new`, et `Voiture()` appelle son constructeur

Explication

Dans cette instruction, `voiture1` est une variable de type `Voiture` qui référence un nouvel objet créé avec `new`, tandis que `Voiture()` appelle le constructeur. Confondre `new` avec `extends` mélange création d’objet et héritage; `new` crée bien l’objet, et la variable référence cet objet.

6. Lorsqu’un objet est créé, quel rôle joue généralement le constructeur de sa classe ?

Définir le modèle de la classe
Initialiser les attributs de l’objet
Afficher les attributs de l’objet
Détruire l’objet après son utilisation

Initialiser les attributs de l’objet

Explication

Le constructeur est appelé lors de la création de l’objet et sert généralement à initialiser ses attributs. L’affichage relève d’une méthode d’affichage, la destruction n’est pas son rôle et le modèle est défini par la classe.

7. Une classe `Compte` déclare une méthode spéciale appelée lors de `new Compte()`. Quelle déclaration respecte la règle du constructeur en Java ?

`void Compte() {}`
`initialiser() {}`
`Compte() {}`
`int Compte() {}`

`Compte() {}`

Explication

Un constructeur porte exactement le nom de sa classe et ne possède aucun type de retour, y compris `void`. `void Compte()` et `int Compte()` sont des méthodes avec un type de retour, tandis que `initialiser()` ne reprend pas le nom de la classe.

8. Une classe `Etudiant` propose un constructeur sans paramètre et un autre avec un nom et un âge. Quel constructeur Java choisit-il pour `new Etudiant("Lina", 20)` ?

Celui qui reçoit un nom et un âge
Celui qui ne reçoit aucun paramètre
Celui qui reçoit un seul paramètre
Aucun, car une classe ne peut avoir plusieurs constructeurs

Celui qui reçoit un nom et un âge

Explication

La surcharge permet à une classe de définir plusieurs constructeurs, et Java sélectionne celui dont les paramètres correspondent aux arguments fournis. Le constructeur sans paramètre ne correspond pas aux deux arguments, et la surcharge autorise bien plusieurs constructeurs.

9. Dans une modélisation où un étudiant est une personne, quelle relation exprime l’héritage entre les deux classes ?

L’étudiant partage seulement le constructeur de la personne
La personne est un objet créé à partir de l’étudiant
L’étudiant possède une personne comme attribut
L’étudiant est une personne et reprend ses membres accessibles

L’étudiant est une personne et reprend ses membres accessibles

Explication

L’héritage permet à une classe de reprendre les membres accessibles d’une autre et représente une relation « est un ». « Possède une personne » décrit plutôt une relation de composition, et l’héritage ne se réduit ni à une instance ni au partage d’un constructeur.

10. Dans une déclaration Java, quelle modification indique que `Professeur` hérite de `Personne` plutôt que de créer un objet ?

Écrire `Personne Professeur()`
Écrire `class Professeur implements Personne`
Écrire `new Professeur(Personne)`
Écrire `class Professeur extends Personne`

Écrire `class Professeur extends Personne`

Explication

Le mot-clé `extends` indique qu’une classe hérite d’une autre classe. `new` sert à créer un objet, `implements` concerne l’implémentation d’une interface et `Personne Professeur()` n’est pas une déclaration d’héritage.

11. Le constructeur d’`Etudiant` reçoit `nom`, `age` et `formation`, tandis que celui de `Personne` reçoit `nom` et `age`. Quelle séquence initialise le parent puis l’attribut propre à l’étudiant ?

`this.formation = formation; super(nom);`
`super(nom, formation); this.age = age;`
`super(nom, age); this.formation = formation;`
`new Personne(nom, age); this.formation = formation;`

`super(nom, age); this.formation = formation;`

Explication

`super(nom, age)` appelle le constructeur parent avec ses deux paramètres, puis `this.formation = formation` initialise l’attribut propre à l’étudiant. Les autres séquences transmettent des paramètres inadéquats, placent les opérations dans le mauvais ordre ou créent un objet distinct au lieu d’appeler le constructeur parent.

12. Une variable `objet` référence déjà une instance de `Etudiant`, qui hérite de `Personne`. Quelle expression vérifie si l’objet référencé est compatible avec le type `Personne` ?

`new Personne(objet)`
`objet instanceof Professeur`
`Etudiant extends Personne`
`objet instanceof Personne`

`objet instanceof Personne`

Explication

`instanceof` teste si un objet existant est compatible avec le type demandé, y compris une classe parente. `new Personne(objet)` confond le test et la création, `Professeur` désigne un type incompatible dans cette situation, et `extends` déclare une relation entre classes plutôt qu’un test sur un objet.

13. Une variable déclarée de type `Personne` référence un objet créé comme `Etudiant`, sous-classe de `Personne`. De quels types cet objet est-il compatible ?

`Etudiant` seulement
`Etudiant` et `Professeur`
`Personne` seulement
`Etudiant` et `Personne`

`Etudiant` et `Personne`

Explication

L’objet créé comme `Etudiant` est compatible avec sa classe et avec sa classe parente `Personne`, même si la variable est déclarée `Personne`. `Personne seulement` confond type déclaré et type de l’objet, `Etudiant seulement` oublie l’héritage, et `Professeur` est une autre classe.

14. Dans une classe Java, `public Compte() {}` et `public void fermer() {}` sont déclarés. Quelle différence permet d’identifier le constructeur ?

`Compte()` possède le type de retour `void`
`fermer()` n’a pas de type de retour
`Compte()` possède le type de retour `Compte`
`Compte()` n’a pas de type de retour

`Compte()` n’a pas de type de retour

Explication

Un constructeur ne déclare pas de type de retour, alors qu’une méthode en possède un, comme `void`. Attribuer `void` ou `Compte` au constructeur lui donne à tort un type de retour, tandis que `fermer()` est bien une méthode avec `void`.

15. Une classe enfant appelle implicitement `super()` parce qu’aucun appel au constructeur parent n’est écrit. Le parent ne possède qu’un constructeur avec un paramètre. Que se passe-t-il ?

La compilation échoue, car aucun constructeur sans paramètre accessible n’est disponible
La compilation réussit, car Java choisit automatiquement le constructeur avec paramètre
La compilation réussit, car le constructeur parent est hérité par l’enfant
La compilation réussit, car `super()` transmet une valeur par défaut au paramètre

La compilation échoue, car aucun constructeur sans paramètre accessible n’est disponible

Explication

Sans appel explicite, Java tente d’insérer `super()`, qui exige un constructeur parent sans paramètre accessible. L’appel ne fournit aucune valeur au paramètre, les constructeurs ne sont pas hérités, et Java ne choisit pas automatiquement un constructeur avec paramètre.

Révisez avec les flashcards

Mémorisez les réponses avec 45 flashcards sur Fondamentaux de la POO en Java.

Comment la programmation orientée objet organise-t-elle un programme ?

Autour d’objets regroupant des données et des comportements.

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

Un modèle définissant les attributs et les méthodes de ses objets.

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

Une instance d’une classe regroupant un état et des comportements.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Fondamentaux de la POO 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