CSC 3101 – Algorithmique et langage de programmation

Portail informatique

Structures de données

Vous pouvez retrouver le jeu ici.

Quel mot clé permet de définir un tuple ?
  1. class
  2. struct
  3. main
  4. public
class

Si o = new Truc(), alors :
  1. o est un tableau de Truc
  2. o est une instance de Truc
  3. o référence une instance de Truc
  4. o référence un tableau de Truc
o référence une instance de Truc. En effet, en Java, les variables et les champs sont soit des références vers des objets (tuples ou tableaux), soit des primitifs.

Sachant que Perso possède un champ name de type String, qu'affiche ce programme ?
  1. Une erreur
  2. null
  3. Bilbon
  4. Sauron
Sauron. Comme représenté sur la figure, les variables bilbon de main et perso de f sont des variables de type référence vers une instance de Perso. Lors de l'appel de f, perso reçoit une copie de la référence vers l'instance de Perso allouée dans main (c'est-à-dire que les objets sont passés par référence). L'affectation perso.name = "Sauron" modifie donc l'objet référencé par bilbon dans le cadre de main.

Sachant que Perso possède un champ name de type String, qu'affiche ce programme ?
  1. Une erreur
  2. null
  3. Bilbon
  4. Sauron
Bilbon. Comme à la question précédente, le perso de f et le bilbon de main référencent bien le même objet au moment de l'appel. Ensuite, f alloue un nouveau Perso, et perso référence alors ce nouvel objet. L'affectation perso.name = "Sauron" dans f ne modifie donc pas le bilbon.name de main.

Sachant que Perso possède un champ name de type String, qu'affiche ce programme ?
  1. Une erreur
  2. null
  3. Bilbon
  4. Sauron
Sauron. La méthode main commence par allouer un Perso, stocke une référence vers cette instance dans la variable bilbon, puis initialise le champ name de cette instance vers la chaîne de caractères "Bilbon". Ensuite, la méthode main alloue un tableau de Perso, initialise chacune des cases du tableau avec la référence bilbon, puis stocke la référence vers le tableau dans la variable persos. Au résultat, bilbon et chacune des trois cases du tableau référencent la même instance de Perso. En particulier, persos[0] et persos[1] référencent la même instance de Perso, ce qui explique pourquoi persos[1].name vaut "Sauron" après que la méthode main ait effectué l'affectation persos[0].name = "Sauron".