UNIVERSITÉ DE MONTRÉAL FACULTÉ DES ARTS ET DES SCIENCES
DIRECTION DE L’ENSEIGNEMENT DE SERVICE EN INFORMATIQUE
COURS : IFT 1170 EXAMEN INTRA
DATE : 28 février 2004 CHARGÉS DE COURS : Michel Reid
DURÉE : 2 heures Van Nguyen Le
NOM et PRÉNOM DE L’ÉTUDIANT :
CODE PERMANENT (si vous vous le rappelez!) : SIGNATURE : Enseignant : Michel Reid __ ou Le Van Nguyen __
TOUTE DOCUMENTATION SUR PAPIER PERMISE
ORDINATEURS PROHIBÉS, CALCULATRICE PERMISE
Pour cet examen, vous disposez de la classe Personne qui suit :
public class Personne {
private String nomPre ;
private String naissance; // format "jj/mm/aaaa", ex : "25/12/1982"
private char sexe ; // ‘F’ pour féminin et ‘M’ pour masculin
public Personne( String nomPre, String naissance, char sexe) { this.nomPre = nomPre ;
this.sexe = sexe ;
this.naissance = naissance ;
if(getMois()==0) //pour vérifier la validité du mois :page 2 this.naissance = "28/02/2004";
}
/* présumez que les méthodes d'accès suivantes sont disponibles sans les écrire :
getNomPre, getSexe et getNaissance, getJour et getAn */
. . .
public int getMois(){ // à compléter : page 4 }
. . . Autres méthodes . . . } // fin de la classe Personne
Il est fortement conseillé de lire les questions qui suivent et de vous référer à cette page pour les méthodes déjà existantes ainsi que les méthodes à compléter.
Examen intra, IFT 1170, Hiver 2004 1
PARTIE 1 – La base de la POO en Java
A) Vrai ou Faux (10 points)
Cochez sur Vrai si l'énoncé est correct ou sur Faux si l'énoncé est incorrect. Vous n’êtes pas tenu de justifier vos réponses. Chaque question vaut deux (2) points.
Soit l’instruction suivante valide pour les numéros 1 à 5:
Personne p1 = new Personne("Baba Ali","25/12/1982", 'M');
1) Avec l’ instruction suivante:
Personne p2 = p1;
Le résultat de
p1==p2;
vaut true
Réponse : Vrai : ___ Faux : __
2) Si la méthode public int getMois() est bien définie de façon à retourner un entier entre 1 et 12 représentant le mois de naissance, s’il est valide, ou la valeur 0 sinon (à la page 4, vous allez écrire cette méthode).
Après l’exécution de :
Personne p2 = new Personne("Baba Orhum","12/25/1982", 'M');
Un nouvel objet Personne est créé dont la date de naissance correspond à aujourd’hui (28 février 2004).
Réponse : Vrai : ___ Faux : __
3) Soit l’instruction suivante :
System.out.println(p1);
Cette instruction provoque une erreur de syntaxe car on n’a pas encore redéfinie la méthode toString() dans la classe Personne.
Réponse : Vrai : __ Faux : ___
4) L’instruction suivante :
p1.getNaissance().substring(0, 1)
retourne la chaîne "25"
Réponse : Vrai : __ Faux : ___
Examen intra, IFT 1170, Hiver 2004 2
5) L’instruction :
double racineCarree = Math.sqrt(p1.getMois() / 2.0 );
est valide.
Réponse : Vrai : ___ Faux : __
B) Compréhension de base du Java et de la POO
6) (10 points)
Après exécution de l’instruction suivante:
Personne p1 = new Personne("Tremblay Sylvie","01/01/1978", 'F');
L’appel suivant :
Personne p3 = new Personne(p1, "Tremblay Francine");
permet de créer la personne p3 de nom et prénom "Tremblay Francine",
de même sexe et de même date de naissance que le paramètre p1. Écrivez au complet la méthode permettant la création de l’objet p3. 7) (15 points)
Complétez la méthode public int getMois() de façon à retourner un entier entre 1 et 12 représentant le mois de naissance, s’il est valide, ou la valeur 0 sinon.
Écrivez aussi un appel pour faire afficher le mois de naissance de
p3 créé à la question 6.
PARTIE 2 – POO, tableau d’objets et vecteurs
Pour cette partie, vous pouvez utiliser la classe Personne de la page 1 ainsi que toutes les méthodes que vous avez écrites à la partie 1.
8) (15 points)
Écrivez une méthode de la classe Personne qui reçoit en paramètre un autre objet Personne et retourne la référence vers l’objet ayant l’âge le plus élevé.
Présumez que la classe Personne contient déjà les méthodes getJour() et getAn(), ainsi que la méthode
getMois() de la question 7.
9) (15 points)
Examen intra, IFT 1170, Hiver 2004 3
Vous disposez d’une classe TestPersonne qui contient un tableau d’objets Personnequi se nomme tabPersonneet un entier nbPersonne
qui contient le nombre d’élément detabPersonne.
Écrivez une méthode pour trier le tableau en ordre croissant des âges (en utilisant la méthode de la question 8)
Remarque : Vous pouvez, au besoin, diviser le traitement en plusieurs méthodes.
10) (15 points)
Écrivez une méthode pour créer et retourner un vecteur qui va contenir tous les éléments du tableau dont l’année de naissance correspond à un des paramètres.
Écrivez aussi les déclarations et appels nécessaires pour créer 2 vecteurs :
v82, le vecteur des personnes nées en 1982 et
v78, le vecteur des personnes nées en 1978.
11) (15 points)
Soit les instructions suivantes dans la classe TestPersonne :
Personne jb1 = new Personne ("Bond Jean","01/01/1978", 'M');
v78.addElement(jb1);
Personne jb2 = new Personne (jb1,"Bond Jean"); // voir Q.6
Écrivez la redéfinition de la méthode nécessaire pour que l’instruction suivante :
v78.contains(jb2);
retourne la valeur true.
Spécifiez aussi dans quelle classe vous devez écrire cette méthode :
12) (5 points)
Ajoutez une méthode appropriée à la classe Personne afin que l’instruction System.out.println(v82);
affiche les informations explicites des personnes du vecteur v82.
Bonne chance et bon succès!
Équipe du IFT 1170
Examen intra, IFT 1170, Hiver 2004 4