Module 1

Se préparer

Test sur l’orienté objet

Pour chaque question, un seul choix de réponse est valide. Pour consulter la bonne réponse, cliquez sur le bouton « Réponse ».

Question 1
Quelle proposition représente le mieux l’esprit du paradigme OO?

  1. Syntaxe simplifiée.
  2. Concevoir en assignant des rôles et des responsabilités propres à chaque objet.
  3. Existence du « ramasse-miettes ».
  4. Simplification des concepts théoriques.
  5. Une approche fonctionnelle plutôt que structurelle.
Réponse

Réponse : b. Concevoir en assignant des rôles et des responsabilités propres à chaque objet.

Explications
C’est la seule réponse qui concerne bien l’esprit OO. L’esprit OO ne simplifie pas la syntaxe. Certains langages OO auront une syntaxe plus simple que d’autres. Par exemple, le langage Python a une syntaxe beaucoup plus simple que le langage C++. Certains langages OO possèdent un « ramasse-miettes » (ou garbage collector) et d’autres non. L’une des particularités de Java est d’en posséder un. Par contre, le langage C++ en est dépourvu, le « ramasse-miettes » est manuel, préparé par le programmeur. L’esprit OO n’est pas plus fonctionnel que structurel. Le paradigme objet est « à cheval », c’est-à-dire qu’il préconise une approche qui est à la fois structurelle et fonctionnelle. Enfin, les concepts théoriques ne sont pas plus simples avec le paradigme OO. Nous pourrions dire le contraire, car le paradigme objet se fonde sur un ensemble important de concepts théoriques (par exemple, l’encapsulation, l’héritage, le polymorphisme).

Question 2
Laquelle des raisons suivantes n’est pas une bonne raison pour avoir recours au paradigme OO?

  1. L’approche OO permet une réutilisation plus aisée.
  2. La structuration des applications et la possibilité de les faire évoluer sont meilleures.
  3. L’approche OO permet une plus grande cohérence entre les différentes activités du développement d’une application.
  4. La charge de travail lors de l’analyse et la conception est réduite avec l’utilisation de l’OO.
Réponse

Réponse : d. La charge de travail lors de l’analyse et de la conception est réduite avec l’utilisation de l’OO.

Explications
Les trois premières propositions caractérisent très bien les ambitions du paradigme objet : réutilisation, évolutivité et développement méthodique du logiciel. Le paradigme objet ne permet pas une réduction de la charge de travail lors de l’analyse et de la conception, mais permet une réduction du temps de test, de correction d’erreurs ainsi que du temps et du coût de maintenance et d’évolution du système. Les coûts supplémentaires lors de la phase de développement du logiciel sont compensés par la meilleure qualité du logiciel produit et surtout par son aptitude à évoluer dans le futur pour combler de nouveaux besoins.

Question 3
Lequel de ces langages de programmation n’est pas orienté objet?

  1. C++
  2. Java
  3. C
  4. Smalltalk
Réponse

Réponse : c. C

Explications
Les trois autres langages sont des langages objets. Smalltalk est le premier langage objet. Il est réputé être « pur », car il opérationnalise tous les concepts du paradigme objet. Les langages Java et C++ sont moins « purs » même si Java opérationnalise presque tous les concepts du paradigme objet. Quant au langage C, c’est le plus célèbre et le plus utilisé des langages qualifiés de « procéduraux ».

Question 4
Qu’est-ce qu’une association?

  1. Cela signifie que 2 attributs sont dans la même classe.
  2. Cela signifie qu’un objet a un lien permanent avec un autre objet.
  3. Cela signifie qu’un attribut est utilisé par une méthode.
  4. Cela signifie que deux applications utilisent des classes communes.
Réponse

Réponse : b. Cela signifie qu’un objet a un lien permanent avec un autre objet.

Explications
Pas d’explication.

Question 5
Que signifie le concept d’encapsulation?

  1. Cela désigne un mécanisme de gestion de la mémoire propre à l’OO.
  2. Cela désigne le regroupement d’une collection d’objets dans un nouvel objet.
  3. Cela désigne le principe consistant à différencier les propriétés internes et les propriétés externes (nécessaires à son utilisation) d’un objet.
  4. Cela désigne un principe de mise en relation des objets d’une application.
Réponse

Réponse : c. Cela désigne le principe consistant à différencier les propriétés internes et les propriétés externes (nécessaires à son utilisation) d’un objet.

Explications
Ce concept est l’un des concepts centraux du paradigme objet. Il permet une programmation claire et sécuritaire, qui élimine une partie de la complexité du code informatique. Voici trois définitions de ce concept :

  • « Un objet est comme une coquille cachant à l’utilisateur son contenu tant au point de vue des données que des opérations. Seules les spécifications des opérations dites publiques sont visibles des utilisateurs. »
    Lai, Michel (1998). Penser objet avec UML et Java. Paris, Dunod, 175 p.
  • « Les détails de l’implémentation d’un objet sont masqués aux autres objets du système à objets. On dit qu’il y a encapsulation des données et du comportement des objets. »
    Cardon, Alain, Dabancourt, Christophe (2001). Initiation à l’algorithmique objet. Eyrolles, 375 p.
  • « L’encapsulation est le mécanisme par lequel le programmeur cache une partie de l’information pour préserver l’intégrité de l’objet. Ce faisant, il établit une séparation entre l’interface (publique) et l’implémentation (invisible). »
    Saliah-Hassane, Hamadou. Extrait d’un document du cours INF 2005 Programmation orientée objet avec C++. TÉLUQ.

Question 6
Quelle assertion correspond le mieux à la définition d’une classe?

  1. C’est un ensemble de données, qui est une description d’une abstraction du monde réel.
  2. C’est un synonyme du terme « objet ».
  3. C’est un ensemble d’objets partageant une structure et un comportement communs.
  4. C’est un groupe d’opérations.
Réponse

Réponse : c. C’est un ensemble d’objets partageant une structure et un comportement communs.

Explications
La deuxième proposition est bien entendu une mauvaise proposition. Les termes « objet » et « classe » ne sont pas synonymes. Une classe dispose d’un ensemble d’opérations, mais ne se réduit pas à cet ensemble d’opérations. Enfin, la première proposition n’est pas totalement fausse, car une classe est bien une « abstraction du monde réel », mais elle n’est pas aussi juste que la proposition c.

  • « Une classe est la description d’un ensemble d’objets ayant la même structure et le même comportement. Elle constitue une entité génératrice d’une famille d’objets dont elle définit la structure et le comportement par les propriétés relationnelles (ses attributs) et fonctionnelles (ses méthodes). »
    Saliah-Hassane, Hamadou. Extrait d’un document du cours INF 2005 Programmation orientée objet avec C++. TÉLUQ.
  • « Une classe représente un modèle à partir duquel seront construits des objets ayant les mêmes propriétés de structures et d’utilisation ».
    Lai, Michel (1998). Penser objet avec UML et Java. Paris, Dunod, 175 p.

Question 7
Qu’appelle-t-on « visibilité d’un objet »?

  1. C’est le nombre de méthodes et d’attributs dont l’objet dispose.
  2. C’est le nombre d’attributs que contient l’objet.
  3. C’est l’espace d’une application où l’objet peut être utilisé.
  4. C’est le nombre d’applications informatiques pour lesquels l’objet est utilisé.
Réponse

Réponse : c. C’est l’espace d’une application où l’objet peut être utilisé.

Explications
La visibilité permet de délimiter le champ d’action d’un objet. Il peut être utile pour toute une application ou seulement pour un nombre restreint d’objets de types différents. Par exemple, en Java, la visibilité se concrétise par l’utilisation de déclarations telles que private, protected, public :

  • private : visibilité au sein de la classe;
  • protected : visibilité au sein du paquetage (package);
  • public : visibilité de partout.

Question 8
Parmi ces qualités, laquelle n’est pas un bénéfice majeur de l’utilisation de l’encapsulation?

  1. Modularité
  2. Amélioration des performances
  3. Robustesse et fiabilité du code
  4. Facilité d’évolution du code
Réponse

Réponse : b. Amélioration des performances.

Explications
Sur les quatre propositions, trois représentent les grands avantages de l’application du principe d’encapsulation : modularité du code, fiabilité du code (et sécurité) et facilité d’évolution du code. Toutefois, un programme OO est généralement moins performant en termes de vitesse qu’un programme équivalent en C. En informatique, la vitesse n’est pas le seul critère. De plus, l’écart de performance entre le langage OO et le langage « classique » diminue d’année en année. L’augmentation de la performance des ordinateurs grand public joue aussi un rôle important dans le gain de performance des applications issues d’une approche OO.

Question 9
Quelle est l’assertion qui correspond le mieux à la définition d’une méthode?

  1. Une méthode est une classe ne contenant aucune variable.
  2. Une méthode est une suite d’invocations d’opérations sur un objet.
  3. Une méthode est l’ensemble des données d’un objet.
  4. Une méthode est un traitement réalisé par un objet.
Réponse

Réponse : d. Une méthode est un traitement réalisé par un objet.

Explications
Les trois premières propositions sont fausses.

Question 10
Qu’est-ce que l’état d’un objet?

  1. C’est l’ensemble des méthodes d’un objet.
  2. C’est l’ensemble des attributs d’un objet.
  3. C’est la valeur des attributs d’un objet.
  4. C’est l’ensemble des méthodes et attributs d’un objet
Réponse

Réponse : c. C’est la valeur des attributs d’un objet.

Explications
Les trois autres propositions sont fausses. L’état d’un objet peut varier au cours de l’exécution de l’application.

Question 11
Quelle assertion se rapproche le plus du concept d’héritage?

  1. C’est un mécanisme qui permet de changer le type des objets.
  2. C’est une relation de spécialisation entre une classe et ses classes filles.
  3. C’est un synonyme du concept « instanciation ».
  4. Cela permet à un objet de connaître la valeur d’un attribut d’un autre objet.
Réponse

Réponse : b. C’est une relation de spécialisation entre une classe et ses classes filles.

Explications
Les première et troisième propositions sont fausses. La quatrième proposition n’est pas fausse, mais ce n’est pas celle qui se rapproche le plus du concept d’héritage. En effet, grâce à l’héritage, un objet peut connaître les valeurs des attributs de classe de surclasses.

Le concept d’héritage est central dans l’esprit OO. Voici deux définitions du concept :

  • « L’utilisation de la relation d’héritage constitue […] un mécanisme implicite de réutilisation de code déjà existant. […] On peut aussi voir dans la relation d’héritage une manière d’associer des concepts de même nature. »
    Lai, Michel (1998). Penser objet avec UML et Java. Paris, Dunod, 175 p.
  • « En général, les systèmes ne naissent pas dans un monde vide. Un nouveau logiciel se construit presque toujours à partir de développements antérieurs : ce sont des exemples d’héritage. L’héritage est le procédé par lequel une classe, dite sous-classe ou classe dérivée, reçoit une partie de sa définition d’une autre classe, dite classe de base ou superclasse. […] De façon générale, dire qu’une classe B hérite d’une classe A, c’est dire que les propriétés de A sont aussi celles de B. »
    Saliah-Hassane, Hamadou. Extrait d’un document du cours INF 2005 Programmation orientée objet avec C++. TÉLUQ.

Question 12
Qu’est-ce qu’un attribut de classe?

  1. C’est un attribut visible que dans la classe où il est défini.
  2. C’est un attribut qui a une valeur constante.
  3. C’est un attribut qui a une valeur unique pour toutes les instances de la classe.
  4. C’est un attribut dont le type est un type primitif.
Réponse

Réponse : c. C’est un attribut qui a une valeur unique pour toutes les instances de la classe.

Explications
Les trois autres propositions sont fausses. Voici un exemple d’utilisation d’attributs de classe. Un éditeur dispose d’une classe Livre dans une application OO de gestion. Tous les livres ont les mêmes dimensions. De ce fait, la classe Livre a deux attributs de classe que l’on peut nommer longueur et largeur. Ces deux attributs seront initialisés avec les dimensions réelles de tous les livres. Tous les objets instances de la classe Livre auront deux attributs longueur et largeur identiques. Si l’éditeur modifie la valeur d’un de ces attributs, toutes les instances seront affectées.

Question 13
Quelle est l’assertion qui correspond le mieux à la définition d’une interface?

  1. C’est une méthode vide d’une classe.
  2. C’est un moyen donné à l’utilisateur d’une application OO d’intéragir avec celle-ci.
  3. C’est l’ensemble des signatures d’opérations publiques d’une classe.
  4. C’est l’ensemble des attributs publics d’une classe.
Réponse

Réponse : c. C’est l’ensemble des signatures d’opérations publiques d’une classe.

Explications
Attention! Quand nous parlons d’interface en OO, il ne faut pas penser aux interfaces graphiques d’une application informatique. Le concept d’interface en OO concerne les objets. Voici une définition de ce concept :

« L’objet est muni d’une interface qui spécifie les interactions qu’il peut avoir avec le monde extérieur. »
Saliah-Hassane, Hamadou. Extrait d’un document du cours INF 2005 Programmation orientée objet avec C++. TÉLUQ.

Question 14
Qu’est-ce qu’une instance?

  1. Une occurrence particulière d’une classe.
  2. C’est un synonyme du terme « classe ».
  3. C’est l’identifiant d’un objet.
  4. C’est l’état d’une classe à un moment donné.
Réponse

Réponse : a. Une occurrence particulière d’une classe.

Explications
Pas d’explication. Les trois autres propositions sont fausses. L’objet est une instance d’une classe.

Question 15
Quand est apparu le premier langage de programmation objet?

  1. Dans les années 40 ou 50.
  2. Dans les années 60 ou 70.
  3. Dans les années 80 à 90.
  4. À partir de 95.
Réponse

Réponse : b. Dans les années 60 ou 70.

Explications
Petit historique :
1965 : SIMULA 1
1967 : SIMULA 67
1972 : SMALLTALK
1981 : SMALLTALK-80
1982 : C++
1983 : OBJECTIVE-C
1985 : EIFFEL
1995 : JAVA

Question 16
Qu’est-ce qu’un attribut?

  1. C’est une variable globale à toute l’application.
  2. C’est une variable quelconque dans une application OO.
  3. C’est une variable locale dans une méthode d’instance.
  4. Un attribut est une variable qui caractérise un objet.
Réponse

Réponse : d. Un attribut est une variable qui caractérise un objet.

Explications
Un objet est constitué d’attributs et de méthodes (ou opérations). Au sein de chaque méthode, il est possible d’avoir recours à des variables. Toutefois, ces variables et les attributs d’un objet sont deux choses différentes : un attribut est une variable très spéciale. Certains auteurs ou praticiens utilisent le terme variable pour désigner les attributs d’une classe ou d’un objet. Il est recommandé d’utiliser seulement le terme attribut et de garder l’usage du terme variable quand vous désignez une variable utilisée localement au sein d’une méthode.

Question 17
De quel concept se rapproche le plus le concept d’abstraction des données ?

  1. Héritage
  2. Instanciation
  3. Encapsulation
  4. Association
Réponse

Réponse : c. Encapsulation.

Explications
Voir la réponse de la question 5.

Question 18
Qu’est-ce qu’un constructeur?

  1. C’est un objet propre à chaque classe qui permet la construction des instances de la classe
  2. C’est le moyen de lancer une application OO.
  3. C’est une méthode permettant l’accès aux attributs privés d’une classe.
  4. C’est une méthode spécifique appelée lorsque la classe est instanciée.
Réponse

Réponse : d. C’est une méthode spécifique appelée lorsque la classe est instanciée.

Explications
La troisième proposition est totalement fausse. Par contre, les deux premières ne sont pas totalement fausses. En effet, pour lancer une application OO (proposition 2), il faut passer par un constructeur, mais cela est une conséquence du fait que, pour démarrer une application OO, il faut instancier une classe. Deuxièmement, un constructeur est bien un élément d’une classe qui permet la construction des instances de la classe (proposition 1), mais ce n’est pas un objet!

La notion de constructeur opérationnalise le concept d’instanciation.

Question 19
Combien d’objets d’une classe donnée peuvent être construits dans une application OO?

  1. Seulement un par constructeur.
  2. Autant qu’en demande l’application.
  3. Seulement un par classe.
  4. Un objet par variable.
Réponse

Réponse : b. Autant qu’en demande l’application.

Explications
Une application peut théoriquement créer un nombre infini d’objets, mais il y a toutefois une limite physique. C’est la mémoire dynamique disponible pour que l’application fonctionne. Même si périodiquement le « ramasse-miettes » (garbage collector) détruit les objets qui ne sont plus utilisés par le programme, il arrive qu’un nombre trop important d’objets en mémoire vive nuise au fonctionnement de l’application OO.

 


Si vous avez moins de 7 bonnes réponses.
Cela signifie que vous êtes très loin d’avoir les connaissances requises sur le paradigme objet pour commencer le cours en toute tranquillité. Vous devez retourner lire les documents du ou des cours que vous avez suivis sur la programmation ou la conception orientée objet du logiciel.

Nous vous recommandons vivement de contacter la personne tutrice. Elle pourra vous conseiller des lectures appropriées et analyser avec vous chacune des erreurs que vous avez commises dans le questionnaire. Elle pourra vous dire celles qui sont plus critiques que les autres.

Si vous avez de 8 à 12 bonnes réponses.
Une partie de vos connaissances est enfouie dans votre mémoire. Nous vous recommandons de retourner vers les définitions de quelques concepts OO, mais sachez qu’il n’y a rien de trop préoccupant dans les résultats que vous avez obtenus.

Nous vous conseillons de contacter la personne tutrice. Si vous avez fait des erreurs sur des concepts précis et que vous voulez savoir si ces concepts sont fondamentaux pour le cours, c’est la personne qui pourra vous renseigner et vous orienter vers des lectures si cela est nécessaire. Vous pouvez aussi, de votre propre chef, retourner dans les documents de cours que vous avez et qui abordent ou présentent en détail le paradigme objet.

Si vous avez de 13 à 17 bonnes réponses.
Vous avez globalement une bonne connaissance du paradigme objet même si vous avez commis quelques erreurs. Certaines questions sont subtiles et il est possible que vous ayez fait des erreurs après avoir hésité devant certaines réponses.

Si vous souhaitez discuter de certaines de vos mauvaises réponses avec la personne tutrice, ne vous gênez pas. Elle pourra vous apporter quelques explications si nécessaire.

Si vous avez plus de 17 bonnes réponses.
Le paradigme objet vous est familier! Vous êtes prêt à vous lancer sans hésiter dans le cours.