ING1 GM QCM Java Flashcards

1
Q

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

a) Syntaxe simplifiée.
b) Concevoir en assignant des rôles et des responsabilités propres à chaque objet.
c) Existence du « ramasse-miettes ».
d) Simplification des concepts théoriques.
e) Une approche fonctionnelle plutôt que structurelle.
A

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).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

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

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

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

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

a) C++
b) Java
c) C
d) Smalltalk
A

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 ».

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qu’est-ce qu’une association?

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

b. Cela signifie qu’un objet a un lien permanent avec un autre objet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Que signifie le concept d’encapsulation?

Cela désigne un mécanisme de gestion de la mémoire propre à l’OO.
Cela désigne le regroupement d’une collection d’objets dans un nouvel objet.
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.
Cela désigne un principe de mise en relation des objets d’une application.
A

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

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

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

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

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

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

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

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

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

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

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

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

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

C’est l’ensemble des méthodes d’un objet.
C’est l’ensemble des attributs d’un objet.
C’est la valeur des attributs d’un objet.
C’est l’ensemble des méthodes et attributs d’un objet
A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

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

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

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

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

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

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

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

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

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qu’est-ce qu’une instance?

Une occurrence particulière d’une classe.
C’est un synonyme du terme « classe ».
C’est l’identifiant d’un objet.
C’est l’état d’une classe à un moment donné.
A

a. Une occurrence particulière d’une classe

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quand est apparu le premier langage de programmation objet?

Dans les années 40 ou 50.
Dans les années 60 ou 70.
Dans les années 80 à 90.
À partir de 95.
A

b. Dans les années 60 ou 70

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qu’est-ce qu’un attribut?

C’est une variable globale à toute l’application.
C’est une variable quelconque dans une application OO.
C’est une variable locale dans une méthode d’instance.
Un attribut est une variable qui caractérise un objet.
A

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.

17
Q

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

Héritage
Instanciation
Encapsulation
Association
A

c. Encapsulation

18
Q

Qu’est-ce qu’un constructeur?

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

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.

19
Q

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

Seulement un par constructeur.
Autant qu’en demande l’application.
Seulement un par classe.
Un objet par variable.
A

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.

20
Q

Lequel des éléments suivants n’est pas un concept POO en Java?
a) Héritage
b) Encapsulation
c) Polymorphisme
d) Compilation

A

d) Compilation

21
Q

Quels keywords sont utilisés pour spécifier la visibilité des propriétés et
des méthodes ?
a) final
b) private
c) abstract
d) protected
e) public

A

b) private
d) protected
e) public

22
Q

Quel concept de Java est un moyen de convertir des objets du monde
réel en termes de classe?
a) Polymorphisme
b) Encapsulation
c) Abstraction
d) Héritage

A

c) Abstraction